gpt4 book ai didi

gstreamer - 使用 Gstreamer 捕获屏幕并将其显示在窗口中?

转载 作者:行者123 更新时间:2023-12-04 23:18:32 26 4
gpt4 key购买 nike

我需要捕获第二个显示器的屏幕并在主显示器中的一个窗口内“监视”它(以 x0.5 缩放并使用相邻插值,因为我更喜欢性能与质量)。从这里 link ,我有这个截屏命令:

gst-launch ximagesrc ! ffmpegcolorspace ! queue \
! vp8enc quality=10 speed=2 ! mux. alsasrc ! audio/x-raw-int ! queue \
! audioconvert ! vorbisenc ! mux. webmmux name=mux \
! filesink location=screencast.webm

...但它捕获到文件(不是窗口),它缺少比例和插值类型,声音不是必需的,等等。

由于我熟悉 libav,因此我正在寻找类似于以下内容的内容:
avconv -f x11grab -r 30 -s 1280x1024 -i :0.1 -c:v mpeg4 -b:v 1000k \
-vf "hflip" -vf "scale=640:480" -sws_flags "neighbor" -f avi - | avplay -i -

...我会使用它,但它的帧率有一些问题(询问 here )。所以,我在 中寻找替代方案Gstreamer .

最佳答案

这是 gst-launch 命令:

gst-launch-1.0 ximagesrc startx=1280 use-damage=0 ! video/x-raw,framerate=30/1 ! videoscale method=0 ! video/x-raw,width=640,height=480  ! ximagesink

解释:

参数 startx = 从“像素列”1280 开始录制 - 也就是说,如果您有两个 1280 宽度的监视器,它将从右侧的一个开始。

参数 use-damage设置为 0 = 不使用 XDamage .损坏只计算后续帧之间的差异,这显然对 CPU 要求很高。

元素 ximagesink = X 服务器创建的窗口作为输出 - 它比 glimagesink(opengl 加速窗口)对 CPU 的要求更低。

元素 videoscale参数 method到 0 表示最近邻居,正如 Mario Mey 在评论中所建议的那样。这使我在 CPU 上节省了 17% 到 12%。

还有可配置的fps和显示窗口的高度/宽度(我认为它足够清楚)。

关于gstreamer - 使用 Gstreamer 捕获屏幕并将其显示在窗口中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33747500/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com