Raspberry Pi 上的 GStreamer 全高清视频 RTP 流

Posted

技术标签:

【中文标题】Raspberry Pi 上的 GStreamer 全高清视频 RTP 流【英文标题】:GStreamer Full HD Video RTP Stream on Raspberry Pi 【发布时间】:2017-11-11 07:35:44 【问题描述】:

我正在尝试使用 GStreamer 构建视频管道。最终它应该是一个全双工全高清视频会议解决方案。由于 Raspberry Pi 3 无法同时对视频流进行编码和解码,因此我使用 Logitech C920 对视频进行编码。所以my RPi只需要对Audio进行编解码,对H.264视频进行解码。我从源代码(1.13.0.1)构建 GStreamer,因为来自 raspbian 存储库的 1.4.4 存在 G.722 编码问题。像 gst-omx (RaspiVideo)、libsrtp (加密)、libwebrtc (echocancel) (0.1 in repo to old - 所以手动下载 0.3) 等库也在构建中。所以我确实有 omxh264dec - 但我找不到视频接收器来流畅地播放 1080p 视频。因此,我尝试通过管道(使用命名管道)将 h.264 流做 hello_video 或 omxplayer,只要我留在本地,它们就可以正常工作。一旦我尝试通过 RTP 流式传输 hello_video 就不会显示任何内容。

工作管道: gst-launch-1.0 filesrc 位置=/opt/vc/src/hello_pi/hello_video/test.h264 !文件接收器位置=/home/pi/test & /opt/vc/src/hello_pi/hello_video/hello_video.bin /home/pi/test 即使来自相机的流: gst-launch-1.0 v4l2src ! '视频/x-h264,宽度=1920,高度=1080,帧率=30/1'!文件接收位置=/home/pi/test & /opt/vc/src/hello_pi/hello_video/hello_video.bin /home/pi/test

通过 RTP 传输时不工作: gst-launch-1.0 v4l2src ! '视频/x-h264,宽度=1920,高度=1080,帧率=30/1'! h264parse 配置间隔=1 ! rtph264pay! udpsink 主机=10.0.0.129 端口=5000 \ & gst-launch-1.0 udpsrc 端口=5000 !应用程序/x-rtp,编码名称=H264,有效负载=96! rtph264depay! '视频/x-h264,宽度=1920,高度=1080,帧率=30/1'!文件接收器位置=/home/pi/test \ & /opt/vc/src/hello_pi/hello_video/hello_video.bin /home/pi/test

在没有 UDP RTP 的情况下无法工作: gst-launch-1.0 v4l2src ! h264parse 配置间隔=1 ! rtph264pay!队列 ! rtph264depay!文件接收器位置=/home/pi/test \ & /opt/vc/src/hello_pi/hello_video/hello_video.bin /home/pi/test

因此,一旦视频流被包含在 RTP 中,似乎就会发生一些事情。

我知道 RTP 流可以正常工作,因为我可以在我的 VM 上接收它并毫无问题地播放它。但是,当然,在 VM 上我可以使用 autovideosink。 在 ubuntu 上工作接收: gst-launch-1.0 udpsrc 端口=5000 ! \ 应用程序/x-rtp,\ 编码名称=H264,有效载荷=96! \ rtph264depay! h264解析! avdec_h264 ! \ 自动视频接收器

非常感谢任何建议。

谢谢

最好的问候, 蒙扎

【问题讨论】:

【参考方案1】:

只需加上我的两分钱 - 从第一个 A 和 B 版本到零和 3 的所有 Pi 都据说能够并行编码和解码高达 1080p30 的信号。我的经验表明他们是。我认为 raspivid 曾经可以选择预览执行此操作的编码视频。

【讨论】:

【参考方案2】:

我也花了一些时间试图弄清楚这一点。 对于那些将寻找相同事物的人:

gst-launch-1.0   filesrc location=./test.h264 !   h264parse !  rtph264pay  ! rtph264depay ! h264parse ! video/x-h264, stream-format="byte-stream" ! filesink location=/dev/stdout | ./hello_video.bin /dev/stdin

所以,输入:

! video/x-h264, stream-format="byte-stream" !

【讨论】:

以上是关于Raspberry Pi 上的 GStreamer 全高清视频 RTP 流的主要内容,如果未能解决你的问题,请参考以下文章

Opencv 3.4.3 gstreamer 在 Raspberry pi 3 上构建,最后一个 Raspbian 伸展不起作用

sh 修复了Raspberry Pi上的慢速鼠标

Raspberry pi 上的 Alsa 问题

Raspberry Pi 上的 Mono [关闭]

无法连接到 Raspberry Pi 上的 BLE 设备

Raspberry Pi 3(服务器)上的 Python 蓝牙错误