2017-08-01 801 views
0

我对通常的视频流和opencv相当陌生。 我想通过使用h264从树莓派3 rtsp流我的计算到另一个设备。 我试着写一个使用popen与ffmpeg到ffserver anf的管道,用vlc创建rtsp服务器来传输内容。不幸的是,我有很大的滞后,我能做的最好的时间是3秒。以低延迟在h.264中从opencv流入rtsp视频

有什么办法可以达到这个目的吗?我愿意考虑其他技术。

谢谢

回答

1

RTMP不是实现低延迟的最佳方式(< 5秒)。

我建议你使用FFMPEG和纯RTP将视频流传输到RTPS服务器。或者直接使用带有Gst-RTSP服务器的Gstreamer,都是C中的开放式解决方案。

延迟还会受到编码器和它用来处理的硬件的影响。

This question有更多信息。

+0

我使用gstreamer管道与opencv VideoWriter一起使用,但它不是标准流,因此我使用gst-rtsp-server。以下是解决方案的链接。 https://stackoverflow.com/questions/45544877/write-in-gstreamer-pipeline-from-opencv-in-python和https://stackoverflow.com/questions/47396372/write-opencv-frames-into-gstreamer- RTSP服务器流水线 – WisdomPill

0

我建议您使用RTMP代替。延迟可以低至100毫秒。

需要考虑的另一件事是,由于播放器的内部缓冲,VLC和其他客户端将引入视频延迟。寻找不缓冲视频的选项,您应该能够从视频延迟中减少几秒钟的时间。

随着ffplay你可以尝试以下方法:

ffplay --fflags nobuffer rtmp://your.server.ip/path/to/stream -loglevel verbose

如果你将传输复用,以破折号或HLS你也可以期待引进更多的延迟的视频流。

+0

我已经尝试过使用popen和rawvideo的ffserver和ffmpeg的组合,但它消耗了大量资源并且延迟很大。 – WisdomPill