Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ffmpeg和live555流式网络摄像头_Ffmpeg_Live555 - Fatal编程技术网

使用ffmpeg和live555流式网络摄像头

使用ffmpeg和live555流式网络摄像头,ffmpeg,live555,Ffmpeg,Live555,我是新来的 我想使用ffmpeg作为编码器,将我的网络摄像头从家庭局域网后面的windows 7(64位)计算机流式传输到数据中心WAN上运行在Debian 64位linux计算机上的live555服务器。我想从ffmpeg发送一个H.264 RTP/UDP流,“testOnDemandRTSPServer”应该向连接到它的客户端发送RTSP流 我使用下面的ffmpeg命令将UDP数据发送到端口1234,IP地址为AA.BB.CC.DD .\ffmpeg.exe -f dshow -i vide

我是新来的

我想使用ffmpeg作为编码器,将我的网络摄像头从家庭局域网后面的windows 7(64位)计算机流式传输到数据中心WAN上运行在Debian 64位linux计算机上的live555服务器。我想从ffmpeg发送一个H.264 RTP/UDP流,“testOnDemandRTSPServer”应该向连接到它的客户端发送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上运行TestOnDemandRTSPSServer,它需要来自AA:BB:CC:DD:1234的原始UDP数据。我尝试在VLC中使用
rtsp://AA.BB.CC.DD:5555/mpeg2TransportStreamFromUDPSourceTest


但我在VLC里什么也得不到。我做错了什么?如何修复它?

您可以尝试的一件事是将VLC的日志详细级别增加到2:VLC需要带内参数集,在这种情况下,它将打印一条调试消息,表示正在消息窗口上等待参数集。仅在
RTSP description
的SDP中设置参数是不够的。IIRC您可以将x264配置为定期或至少在每个IDR帧中输出参数集

其他你可以尝试的事情:
在使用VLC之前,可以使用openRTSP测试流。如果您使用
openRTSP-d5-Qrtsp://xxx.xxx.xxx.xxx:5555/mpeg2TransportStreamFromUDPSourceTest
options openRTSP将在流媒体播放5秒后打印质量统计数据。然后,您将能够验证TestOnDemandRTSPSServer确实在中继流,并且ffmpeg应用程序和TestOnDemandRTSPSServer之间没有问题。

您尝试过其他流吗?另外,由于防火墙的问题,我也遇到了类似的问题,您可能需要确保您可以通过这些端口实际传输数据

如果缺少同步字节,可能是流问题-尝试使用其他数据源,看看是否有帮助,尝试.avi文件或.mp4文件,通常.mp4文件很容易流。如果流式处理与.mp4文件一起工作,而不是与mpegts文件一起工作,那么这是文件中的一个问题-ffmpeg试图找出每个“帧”或“帧集”数据的结束位置,以便尝试流式处理离散块


自从我上次使用这个东西已经两年多了,所以如果你有进展,请告诉我。

据我所知,编写一个DeviceSource类不是一件小事,你所描述的问题肯定是live555邮件列表中经常讨论的问题——如果你想做任何与rtsp开发相关的事情,你需要得到列表a.s.a.p的批准

您似乎遇到的问题与以下事实有关:某些视频格式在编写时考虑了流,rtsp服务器可以轻松地流式传输某些格式,因为它们包含“同步字节”和其他“标记”,可用于确定帧边界的结束位置。您可以使用的最简单的解决方案是获得相机的SDK,并使用它从相机请求数据。有许多不同的库和工具包可以让您从相机访问数据,其中之一就是DirectX SDK。一旦你有了相机数据,你就需要将它编码成一种可流化的格式,你可以使用DirectX获得原始相机帧,然后使用ffmpeg(libavcodec,libavformat)将其转换成mp4/h264帧数据

一旦有了编码的帧数据,就可以将其输入到DeviceSource类中,它将为您处理数据流。我希望我手头有代码,但我受到保密协议的约束,不会从前提中删除代码,尽管live555网站上记录了通用算法,所以我可以在这里解释


我希望你在这方面有更多的运气。如果你陷入困境,记得在你的问题中添加代码。现在唯一使您的原始计划无法运行(将文件流式传输到VLC)的是您选择流式传输的文件格式。

rtp一次只能发送一个流,在本例中,您使用mpegts发送。。。[?]我在TestOnDemandRTSPSServer控制台上得到一个“缺少同步字节”您是对的。OpenRTSP未接收任何流式数据。如何解决ffmpeg和live555I之间的问题我在同一台windows 7计算机上运行了所有程序。还是一样的结果。OpenRTSP在5秒内接收到1或2个数据包。我不确定,我个人从未使用过TestOnDemandRTSPSServer,我会先尝试live555邮件列表,通常查询的响应时间相当快。感谢您的响应。我唯一感兴趣的是网络摄像头。我没有尝试过不同的流。我需要为网络摄像头编写设备源吗?是否有任何示例代码显示如何将其与ffmpeg一起使用?