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

标签 ffmpeg live555

我是live555的新手。

我想使用 ffmpeg 作为编码器将我的网络摄像头从家庭 LAN 后面的 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 上运行 testOnDemandRTSPServer,它需要来自 AA:BB:CC:DD:1234 的原始 UDP 数据。我尝试使用 rtsp://AA.BB.CC.DD:5555/mpeg2TransportStreamFromUDPSourceTest 在 VLC 中打开 rtsp 流

但我在 VLC 中一无所获。我究竟做错了什么?我该如何解决?

最佳答案

据我所知,编写一个 DeviceSource 类并非易事,您所描述的问题绝对是 live555 邮件列表中经常讨论的问题 - 如果您想这样做,您需要 a.s.a.p 让自己获得批准任何与 rtsp 开发相关的东西。

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

获得编码帧数据后,将其输入到 DeviceSource 类中,它会为您处理流式传输数据。我希望我手头有代码,但是我受 NDA 的约束,不能从场所中删除代码,尽管 live555 网站上记录了一般算法,所以我可以在这里解释一下。

我希望你有更多的运气。如果您遇到困难,请记住在您的问题中添加代码。现在唯一阻止您的原始计划工作(将文件流式传输到 VLC)是您选择流式传输的文件格式。

关于ffmpeg - 使用 ffmpeg 和 live555 流式传输网络摄像头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24247834/

相关文章:

ffmpeg - 使用 live555 和 FFmpeg 流式传输 H264

ffmpeg - 如何使用 ffmpeg 在视频中的任意位置显示大量字幕?

java - 告诉 java servlet 何时从外部命令行调用返回

ffmpeg - 我怎么知道某个文件是视频文件?

tcp - 无法使用 Live555 代理服务器流式传输 RTSP

c++ - Visual Studio 2010 Live555

timestamp - 如何修复不正确的时间戳计算? [OpenRtspClient]

c++ - 'network-caching'选项在vlc中使用了Live555的哪些函数

ffmpeg deocde 不产生输出文件

python-3.x - 在 python 之外为 scikit-video 设置 FFmpeg 路径