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

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

我一直在 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

然后在另一端使用 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

答案1

问题主要在于你正在使用软件转码, 代替硬件转码

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

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

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

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

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

相关内容