【问题标题】:Raspberry Pi USB Webcam Stream to Computer using Gstreamer使用 Gstreamer 将树莓派 USB 网络摄像头流式传输到计算机
【发布时间】:2016-03-15 22:38:40
【问题描述】:

我有一个连接到树莓派的鱼眼 USB 网络摄像头,我正试图将其传输到计算机。我玩过ffmpeg,超过320x240似乎有点滞后。从我读到的内容来看,人们对 gstreamer 很满意。

所以我已经测试了 USB 网络摄像头,它可以在本地工作

gst-launch-1.0 -v v4l2src device=/dev/video0 ! 'video/x-raw,width=640,height=480' ! glimagesink

这些是我一直在尝试使用的用于将视频传输到我的计算机的命令。但是,我所看到的只是一个绿色窗口。

TCP 服务器:gst-launch-1.0 -v v4l2src device=/dev/video0 ! 'video/x-raw,width=640,height=480,framerate=30/1' ! x264enc byte-stream=true ! rtph264pay ! gdppay ! tcpserversink host=192.168.200.38 port=5000 sync=false

TCP 客户端:gst-launch-1.0 -v tcpclientsrc host=192.168.200.38 port=5000 ! gdpdepay ! rtph264depay ! avdec_h264 ! videoconvert ! autovideosink sync=false

UDP 服务器: gst-launch-1.0 -v v4l2src device=/dev/video0 ! 'video/x-raw,width=640,height=480,framerate=30/1' ! x264enc byte-stream=true ! rtph264pay ! gdppay ! udpsink host=192.168.200.37 port=5000 sync=false

UDP 客户端: gst-launch-1.0 -v udpsrc port=5000 ! gdpdepay ! rtph264depay ! avdec_h264 ! videoconvert ! autovideosink sync=false

我想我一定是以某种方式错误地管道插件。任何建议表示赞赏。

【问题讨论】:

  • 我认为它们是传递给 gst-launch-1.0 的参数的一部分。它们被解释为视频“管道”,每个插件的输出被传递给下一个插件,用感叹号分隔。
  • 好的。有意义的是,它使用自定义管道字符将其与使用 | 的常规管道区分开来
  • 但是我做错了什么???|||???

标签: ffmpeg raspberry-pi gstreamer webcam


【解决方案1】:

所以我玩了一天的东西并让它工作。我会发布我到目前为止所拥有的。该队列允许 rpi 多线程处理 h264 编码部分,并且我已将 omxh264enc 子化为 x264enc,因为它是 openmax/加速的。这两项更改都有助于延迟。

我想我不需要 gdppay? (看到有人在这里没有它Stream webcam video with gstreamer 1.0 over UDP to PC

rpi 端

gst-launch-1.0 -vv -e v4l2src device=/dev/video0 ! "video/x-raw,width=640,height=480" ! queue ! omxh264enc ! h264parse ! rtph264pay ! udpsink host=192.168.200.37 port=5000

电脑端

gst-launch-1.0 -vv -e udpsrc port=5000 ! application/x-rtp, payload=96 ! rtph264depay ! queue ! avdec_h264 ! videoconvert ! autovideosink sync=false

【讨论】:

    【解决方案2】:

    先尝试以下方法:

    1. 在你的 x264enc 之后添加tune=zerolatency(这通常在嵌入式系统中需要)
    2. 重新检查 IP 和连接(我发现 TCP 和 UDP 的 IP 不同)

    如果问题还没有解决,说明几点:

    1. 你的相机提供什么视频格式(在你的第一个命令后添加“-v”,它会告诉你)
    2. x264enc 是否支持该格式?
      (根据its manual,x264enc 支持I420、YV12、Y42B、Y444、NV12、I420_10LE、I422_10LE、Y444_10LE
      • 如果格式不受支持,请尝试使用其他相机或其他编码器。
      • 如果支持,请尝试确认您的编码命令(filesink/fakesink)和解码命令(videotestsrc

    【讨论】:

    • TCP是拉模式,UDP是推模式,我的树莓派在192.168.200.38,电脑在192.168.200.37。
    猜你喜欢
    • 1970-01-01
    • 2020-03-22
    • 2017-05-12
    • 2022-06-13
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多