【发布时间】:2017-02-23 03:54:11
【问题描述】:
我正在尝试在 Windows 上使用 ffmpeg 3.2.2 从 5MP USB 摄像头捕获和流式传输视频。这是我正在使用的命令行:
ffmpeg -f dshow -video_size 320x240 -framerate 30 -i video="HD USB Camera" -vcodec libx264 -preset ultrafast -tune zerolatency -g 60 -f mpegts udp://192.168.1.100:10000
我的流的目的地(同一子网上的一个 Ubuntu 机器)正在通过以下方式运行 ffplay:
ffplay -i udp://127.0.0.1:10000
这可行,但视频流似乎延迟了 8 到 10 秒。据我了解,目的地在收到 I 帧之前无法开始显示流,因此我尝试将 GOP 值指定为 60,认为这将导致每 2 秒插入一个 I 帧(@ 30 FPS)。
执行转码的 Windows 机器运行 i7-3840QM @ 2.80GHz 并具有 32 GB RAM。 FFmpeg 似乎使用的 CPU 很少(如 2%),因此它似乎不受 CPU 限制。作为一个测试,我尝试摄取一个 MP4 文件并且不进行任何转码 (ffmpeg -re -i localFile.mp4 -c copy -f mpegts udp://192.168.1.100:10000),但在 Ubuntu 系统上显示流之前仍然需要几秒钟。
在相关说明中,我还在评估 Wowza Streaming Engine 服务器的试用版,当我将我的 ffmpeg 流定向到 Wowza 时,在 Wowza 测试播放器开始播放之前,我得到相同的 8 - 10 秒延迟.对于它的价值,一旦流开始播放,它似乎运行良好(除了一切都“落后”几秒钟的事实)。
我是视频流的新手,所以我可能在这里遗漏了一些明显的东西,但谁能告诉我可能导致此延迟的原因或建议我如何进一步解决问题?谢谢!
【问题讨论】:
标签: ffmpeg video-streaming latency wowza