【问题标题】:gstreamer rtp streaming webcamgstreamer rtp 流媒体网络摄像头
【发布时间】:2011-03-31 20:19:30
【问题描述】:

我正在尝试使用 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 从网络摄像头获得的信息,但什么也没发生...

我做错了什么???

我正在运行 Ubuntu 10.10,其中包含从 git 存储库编译的 gstreamer 和插件...

提前致谢!!

【问题讨论】:

    标签: ubuntu streaming gstreamer


    【解决方案1】:

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

    Theora 做出了与 Vorbis 相同的有争议的设计决定 包括 DCT 系数的整个概率模型和所有量化 比特流标头中的 tization 参数。这通常是几百 字段。因此,没有解码流中的任何帧是不可能的 之前已获取编解码器信息和编解码器设置标头。

    您可以在 gst-launch 详细输出中将此配置参数视为 loooong 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-launch 脚本中:

    $ 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 \
        ...
    

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

    【讨论】:

      猜你喜欢
      • 2012-08-16
      • 2020-03-22
      • 2022-06-13
      • 2023-01-17
      • 1970-01-01
      • 1970-01-01
      • 2017-05-24
      • 2020-05-05
      • 2015-09-10
      相关资源
      最近更新 更多