当我使用gstreamer在UDP上流式传输时,缩放screencapture失败

时间:2013-12-14 11:16:31

标签: gstreamer

我想通过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

我该如何解决这个问题?

1 个答案:

答案 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