GStreamer产生什么样的流?

时间:2014-11-16 12:19:58

标签: opencv ffmpeg gstreamer vlc avconv

我使用以下两个命令从Raspberry Pi流式传输视频

RAPI

raspivid -t 999999 -h 720 -w 1080 -fps 25 -hf -b 2000000 -o - | gst-launch-1.0 -v fdsrc ! h264parse !  rtph264pay config-interval=1 pt=96 ! gdppay ! tcpserversink host=$RA-IP-ADDR port=5000 

Linux Box

gst-launch-1.0 -v tcpclientsrc host=$RA-IP-ADDR port=5000  ! gdpdepay !  rtph264depay ! avdec_h264 ! videoconvert ! autovideosink sync=false 

但它是什么样的流?我可以用OpenCV阅读吗?或转换为avconv|ffmpeg nc $RA-IP-ADDR 5000 | avconv?或者观看VLC?

1 个答案:

答案 0 :(得分:3)

该流似乎是封装在RTP流中的GDP流,后者似乎是GStreamer专有的。您可能能够从管道中删除gdppay和gdpdepay元素并使用其他RTP工具(那里有很多;我相信VLC直接支持RTP),但您也可以使用GStreamer管道来管理已卸载的GDP流(在这种情况下,它包含的H.264流)从RPi到Linux Box端的文件,如下所示:

gst-launch-1.0 tcpclientsrc host=$RA-IP-ADDR port=5000 ! gdpdepay ! rtph264depay ! filesink location=$FILENAME

或者,将它传递给stdout:

gst-launch-1.0 tcpclientsrc host=$RA-IP-ADDR port=5000 ! gdpdepay ! rtph264depay ! fdsink

这些中的一个或另一个应该让您以流级别操作H.264视频。

如果你有合适的插件,GStreamer 1.0也可以或多或少直接与libav交互。使用gst-inspect-1.0 libav查看支持的元素。管道中已有的avdec_h264元素是这些libav元素之一。