使用FFMPEG和LIVE555流的网络摄像头(stream webcam using ffmpeg

2019-10-20 07:28发布

我是新来LIVE555。

我想从Windows 7(64位)的后面家庭局域网使用的ffmpeg的编码器在广域网上的数据中心的Debian的64位Linux机器上运行的服务器LIVE555流机我的摄像头。 我想送从FFMPEG和“testOnDemandRTSPServer”一个H.264 RTP / UDP流应当发出RTSP流来连接到它的客户。

我使用下面的ffmpeg命令,它发送UDP数据端口1234,IP地址AA.BB.CC.DD

.\ffmpeg.exe -f dshow -i video="Webcam C170":audio="Microphone (3- Webcam C170)" -an 
 -vcodec libx264 -f mpegts udp://AA.BB.CC.DD:1234

在Linux服务器我正在端口5555,其从AA预计原始UDP数据testOnDemandRTSPServer:BB:CC:DD:1234。 我尝试使用,以打开VLC的RTSP流的rtsp://AA.BB.CC.DD:5555/mpeg2TransportStreamFromUDPSourceTest

但我什么也得不到的VLC。 我究竟做错了什么? 我怎样才能解决这个问题?

Answer 1:

从我记得,那是不平凡的写DeviceSource类,您所描述的问题,无疑是一个相当频繁讨论的LIVE555邮件列表上的东西 - 你需要让自己批准的清单尽快如果你想要做的什么RTSP发展有关。

你似乎有涉及到一些视频格式都写在心中流媒体和RTSP服务器可以很容易地流的特定格式,因为它们含有“同步字节”等“标志”,它可以用来确定一个事实的问题其中帧边界结束。 你可以用最简单的办法是让SDK相机你的手,并用它来从相机中请求数据。 有迹象表明,让你从相机访问数据很多不同的库和工具包 - 其中之一将是DirectX SDK中。 一旦你的相机数据,你就需要把它编码成流式传输的格式,你也许能够得到使用DirectX的原始相机帧,然后使用的ffmpeg将其转换成MP4 / H264帧数据(的libavcodec,libavformat)时。

一旦你有你编码的帧数据,你喂的是到您的DeviceSource类,并且将采取流媒体数据对你的照顾。 我希望我手头上的代码,但我被NDA势必不会从房产移走代码,虽然一般的算法是LIVE555网站上的文档,所以我能够在这里解释。

我希望你有更多的运气与此有关。 如果您遇到问题的话,记得将代码添加到您的问题。 现在,这是一个从工作(流文件VLC)停止你的原计划的唯一事情是你选择的流式传输的文件格式。



Answer 2:

有一两件事你可以尝试是增加VLC的日志记录的级别,以2:VLC预计带参数集在这种情况下,将打印,它正在等待消息窗口上的参数集调试消息。 只要有参数集的的SDP RTSP DESCRIBE是不够的。 IIRC到输出参数与每一个IDR帧周期性地或至少设置可以配置X264。

其他的事情你可以试试:可以使用VLC之前测试与openRTSP流。 如果使用openRTSP -d 5 -Q rtsp://xxx.xxx.xxx.xxx:5555/mpeg2TransportStreamFromUDPSourceTest选择流媒体5秒后openRTSP将打印质量统计。 然后,你就可以验证testOnDemandRTSPServer确实中继流,而没有ffmpeg的应用和testOnDemandRTSPServer之间的问题。



Answer 3:

您是否尝试过不同的流? 另外,我也有类似的问题,因为我的防火墙问题,你可能想确保你其实可以通过这些端口流数据。

如果你缺少同步字节,它可能是一个流问题 - 尝试使用不同的数据源,并看看是否有帮助,尝试.avi文件或.MP4文件,通常.mp4文件很容易流。 如果流与.mp4文件的工作,而不是与你的MPEGTS文件,那么它在你的文件有问题 - ffmpeg的是试图找出其中每个“框架”或“框架集”数据的结束,因此,它可以尝试流离散块。

它已经超过2年没这个东西的工作,所以让我知道如果你得到任何地方。



文章来源: stream webcam using ffmpeg and live555