使用 ffmpeg 获得类似 webrtc 的延迟?

Dav*_*ton 12 ffmpeg video-streaming

我一直在 Chrome 和我的手机之间使用这个:

http://www.webrtc.org/demo

而且延迟非常好 - 不到 1 秒。

我一直试图在我的电脑上复制它,但没有成功。

ffmpeg -f video4linux2 -i /dev/video0  -s 320x200 -r 50 -deadline realtime -vcodec libvpx -f webm -fflags nobuffer udp://10.0.0.55:9002
Run Code Online (Sandbox Code Playgroud)

然后在另一边使用ffplay。

它仍然有几秒钟的滞后。

最终我想从我的电脑流式传输到 Android 手机,但延迟必须很好。

编辑- 这效果明显更好。如果我能把它剃掉一点,我会很高兴:

ffmpeg -vcodec rawvideo -f video4linux2 -i /dev/video0  -s 320x200 -r 25 -vcodec libvpx -f rtp -deadline realtime rtp://10.0.0.55:9002
Run Code Online (Sandbox Code Playgroud)

Ho1*_*Ho1 0

问题主要是由于您使用的是软件转码,而不是硬件转码

根据经验,如果转换使用硬件加速,则延迟将小于一秒(通常为毫秒)。如果用软件完成,那么延迟将超过一秒。

FFmpeg 支持硬件加速,但让它为您工作通常很棘手。

https://trac.ffmpeg.org/wiki/HWAccelIntro

另一方面,Google Chrome 在您的计算机和 Android 手机上都支持 VP8 和 H264(如果可用)硬件编码/解码:

http://code.google.com/p/chromium/issues/detail?id=428223

  • 但这不仅仅与硬件加速有关...编解码器配置在延迟中起着更大的作用。需要调整编解码器以保持低延迟,但会牺牲质量和带宽。无论您是否使用硬件加速编解码器,都可以完成此操作。 (2认同)