我想通过UDP上的ximagesrc流式传输桌面。
适用于完整的桌面,没有任何缩放(宽度,高度,帧速率),使用以下程序:
gst-launch-0.10 ximagesrc ! ffmpegcolorspace ! x264enc tune=zerolatency bitrate=500 speed-preset=superfast ! queue ! rtph264pay name=pay0 pt=96 ! udpsink host=192.168.0.103 port=5000 auto-multicast=true
但是,当我想指定widht时,它会失败。
gst-launch-0.10 ximagesrc ! video/x-raw,width=320,height=240,framerate=20/1 ! ffmpegcolorspace ...etc
错误: 警告:错误的管道:无法将ximagesrc0链接到ffmpegcsp0
我该如何解决这个问题?
答案 0 :(得分:3)
您需要在上限之前添加videoscale
元素:
$ gst-launch-0.10 ximagesrc ! videoscale ! video/x-raw,width=320,height=240,framerate=20/1 !
<强> UPD 强>
此外,问题可能在于您的上限。您可以使用-v
标志来获取详细输出并检查ximagesrc
的真实内容
E.g。
gst-launch-0.10 -v ximagesrc \
! ffmpegcolorspace \
! x264enc tune=zerolatency bitrate=500 speed-preset=superfast \
! queue ! rtph264pay name=pay0 pt=96 \
! udpsink host=192.168.0.103 port=5000 auto-multicast=true
...
/GstPipeline:pipeline0/GstXImageSrc:ximagesrc0.GstPad:src: caps = video/x-raw-rgb, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, width=(int)1366, height=(int)768, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)1/1
...
我可以看到它提供了video/x-raw-rgb
(不是video/x-raw
)。
因此,要缩放视频,我需要一个这样的管道:
gst-launch-0.10 -v ximagesrc \
! ffmpegcolorspace \
! videoscale ! video/x-raw-rgb,width=320,height=240 \
! x264enc tune=zerolatency bitrate=500 speed-preset=superfast \
! queue ! rtph264pay name=pay0 pt=96 \
! udpsink host=192.168.0.103 port=5000 auto-multicast=true