Ubuntu gstreamer rtp流媒体网络摄像头

Ubuntu gstreamer rtp流媒体网络摄像头,ubuntu,streaming,gstreamer,Ubuntu,Streaming,Gstreamer,我正在尝试使用OpenCV和gstreamer流式传输我的网络摄像头。。。对于第一个测试,我使用以下命令行进行测试: gst-launch v4l2src ! ffmpegcolorspace ! theoraenc ! rtptheorapay ! udpsink host=localhost port=5000 sync=false -v 然后,我尝试使用以下命令行查看流: gst-launch udpsrc port=5000 caps="video/x-raw-yuv, format=

我正在尝试使用OpenCV和gstreamer流式传输我的网络摄像头。。。对于第一个测试,我使用以下命令行进行测试:

gst-launch v4l2src ! ffmpegcolorspace ! theoraenc ! rtptheorapay ! udpsink host=localhost port=5000 sync=false -v
然后,我尝试使用以下命令行查看流:

gst-launch udpsrc port=5000 caps="video/x-raw-yuv, format=(fourcc)I420, framerate=(fraction)30/1, width=(int)640, height=(int)480, interlaced=(boolean)false" ! rtptheoradepay ! theoradec ! ximagesink
但我得到一个错误:无法将udpsrc0链接到rtptheoradepay0,也无法将udpsrc0链接到rtptheoradepay0

然后我尝试使用vlc来查看我从使用rtp://@localhost:5000的网络摄像头中得到了什么,但什么都没有发生

我做错了什么

我正在用gstreamer和从git repositorie编译的插件运行Ubuntu10.10


提前谢谢

解码器需要额外的配置参数。以下是本规范的摘录:

Theora做出了与Vorbis相同的有争议的设计决策 包括DCT系数的全概率模型和所有- 位流标头中的参数。这通常是几百 领域。因此,不可能解码流中的任何帧 先前已获取编解码器信息和编解码器设置标题

您可以在gst启动详细输出中将此配置参数视为Looong base64编码字符串:

/GstPipeline:pipeline0/GstUDPSink:udpsink0.GstPad:sink: caps = application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)THEORA, sampling=(string)YCbCr-4:2:0, width=(string)640, height=(string)480, configuration=(string)\"AAAAAbkkHgqZ...gA\\=\\=\", delivery-method=(string)inline, payload=(int)96, ssrc=(guint)109069492, clock-base=(guint)1126428223, seqnum-base=(guint)23181
您需要复制此字符串并将其粘贴到接收gst启动脚本:

$ gst-launch \
    udpsrc \
      port=5000 \
      caps="video/x-raw-yuv \
           ,format=I420 \
           ,framerate=30/1 \
           ,width=640,height=480 \
           ,interlaced=false \
           ,configuration=(string)\"AAAAAbkkHgqZ...gA\\=\\=\"" \
    ! rtptheoradepay \
    ...

如果不更改视频编码参数(大小、比特率等),此字符串将保持不变。因此,您可以对其进行硬编码。

Theora解码器需要额外的配置参数。以下是本规范的摘录:

Theora做出了与Vorbis相同的有争议的设计决策 包括DCT系数的全概率模型和所有- 位流标头中的参数。这通常是几百 领域。因此,不可能解码流中的任何帧 先前已获取编解码器信息和编解码器设置标题

您可以在gst启动详细输出中将此配置参数视为Looong base64编码字符串:

/GstPipeline:pipeline0/GstUDPSink:udpsink0.GstPad:sink: caps = application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)THEORA, sampling=(string)YCbCr-4:2:0, width=(string)640, height=(string)480, configuration=(string)\"AAAAAbkkHgqZ...gA\\=\\=\", delivery-method=(string)inline, payload=(int)96, ssrc=(guint)109069492, clock-base=(guint)1126428223, seqnum-base=(guint)23181
您需要复制此字符串并将其粘贴到接收gst启动脚本:

$ gst-launch \
    udpsrc \
      port=5000 \
      caps="video/x-raw-yuv \
           ,format=I420 \
           ,framerate=30/1 \
           ,width=640,height=480 \
           ,interlaced=false \
           ,configuration=(string)\"AAAAAbkkHgqZ...gA\\=\\=\"" \
    ! rtptheoradepay \
    ...
如果不更改视频编码参数(大小、比特率等),此字符串将保持不变。所以,你可以硬编码