如何使用gstreamer更改纵横比?

3
我有这个命令:
gst-launch-1.0 ximagesrc startx=1920 starty=0 endx=2943 endy=768 use-damage=0\
! video/x-raw,framerate=15/1 \
! videoscale method=0 \
! video/x-raw,width=640,height=360 \
! videoflip method=horizontal-flip \
! ximagesink

它将第二个显示器(从像素1920到最后一个-1)显示在第一个显示器的小窗口中,应用水平翻转和使用邻居缩放方法,在15fps下进行。这是为了在我的第一个显示器(计算机显示器)上“监视”我的第二个显示器(电视)。现在,我的第二个显示器是16:9的电视,我正在使用1024x768。在那里显示的图像已经被缩放了(从16:9到4:3)。现在,我需要在gstreamer窗口中将该4:3比例缩放回16:9。但是,通过使用此命令,我得到了您可以在此完整截图中看到的内容(具有实际窗口和“期望”的窗口):

enter image description here

什么是正确的命令来完成这个?
1个回答

2

不要使用videoscale添加边框:

gst-launch-1.0 ximagesrc startx=1920 starty=0 endx=2943 endy=768 use-damage=0\
! video/x-raw,framerate=15/1 \
! videoscale method=0 add-borders=false \
! video/x-raw,width=640,height=360 \
! videoflip method=horizontal-flip \
! ximagesink

谢谢,伙计。还有一件事:我的研究已经到了这个命令来保存CPU,但现在我不知道为什么要添加use-damage=0。这是干什么用的?它是必要的吗? - Mario Mey
@MarioMey 使用 use-damage=0 .. 好吧,XDamage 是 X11 的选项,它只会抓取变化而不是完整的帧(类似于 h264,它优化比特率以仅存储帧之间的相对变化).. 我猜当你使用 xdamage 时,很多 CPU 被用来识别变化,而不是简单地抓取.. 你可以查看这个答案。但现在我感到困惑了,在那个问题中,我认为 XDamage 对 CPU 更好,但我将其设置为 =0 .. - nayana
哦,我不记得我从哪里得到那个完整的命令了:可能是从我的一个问题中,真是太蠢了。另外,在0和1之间没有显著的CPU差异,但我想知道为什么会有这样的差异。 - Mario Mey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接