我想在使用ffmpeg,nodejs和html5投射的屏幕上进行HTTP直播。我希望它尽可能实时。但是,我发现客户收到的视频落后了1~2秒(在Chrome / Chromium上)。我使用vp8 / webm作为我的编解码器。
我已经消除了以下因素:
1)网络:我已尝试通过声明视频源为127.0.0.1:PORT或localhost:PORT在本地服务和接收视频文件
2)ffmpeg编码速度:我试过在本地输出文件,“延迟”似乎可以忽略不计。
3)Chrome内部缓冲区。缓冲液占0.07s~0.08s。
在nodeJS端,我有一个运行ffmpeg命令的子进程,并执行了一个ffmpeg.stdout.pipe(res); < - ffmpeg是child_process.spawn(...)
所以似乎nodejs的ffmpeg.std.pipe(res)似乎是延迟视频流的那个。这样我是否正确?无论如何,我可以减少延迟吗?
答案 0 :(得分:0)
转到WebRTC无需实现编解码器,管道等任何东西(已经在chrome,opera,firefox中)
用途: MediaCaptureAPI(访问您的cam和mic并将对象转换为URL,默认使用vp8编解码器等)
RTCPeerconnectionAPI(发送和接收媒体流p2p)
RTCDatachannelAPI(使用p2p发送和接收数据)