我试图在Windows上使用ffmpeg 3.2.2从500万像素USB摄像头捕获和传输视频。下面是我使用的命令行:ffmpeg视频流播放延迟?
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,认为这会导致I帧每2秒插入一次(@ 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秒背部。对于什么是值得的,一旦流开始播放,它似乎运行良好(除了几秒钟之后所有东西都“落后”的事实)。
我是新来的视频流,所以我可能会错过这里明显的东西,但任何人都可以告诉我什么可能会导致这种延迟或建议我可能会进一步排除故障的问题?谢谢!