FFMPEG在image2pipe模式下等待图像
我正在创build一个Node JS应用程序,它需要一个m-jpeg图像stream,并在运行中构build一个MPEG-1stream。 目前我正在利用fluent-ffmpeg。 蒸汽意欲是连续和长寿的。 图像以恒定的帧率自由stream动。
不幸的是,使用image2pipe
和input-vcodec mjpeg
,似乎ffmpeg需要等待,直到所有的图像准备好,然后再开始处理。
当图像到达时,是否有任何方法可以立即将ffmpegpipe道插入并排出?
这是我目前的节点JS代码:
var proc = new ffmpeg({ source: 'http://localhost:8082/', logger: winston, timeout: 0 }) .fromFormat('image2pipe') .addInputOption('-vcodec', 'mjpeg') .toFormat('mpeg1video') .withVideoBitrate('800k') .withFps(24) .writeToStream(outStream);
而ffmpeg调用它会产生:
ffmpeg -f image2pipe -vcodec mjpeg -i - -f mpeg1video -b:v 800k -r 24 -y http://127.0.0.1:8082/
要获得直播,请尝试将image2pipe
切换为rawvideo
:
.fromFormat('rawvideo') .addInputOption('-pixel_format', 'argb') .addInputOption('-video_size', STREAM_WIDTH + 'x' + STREAM_HEIGHT)
这将立即以非常低的延迟对video进行编码。
您可以删除.fromFormat('image2pipe')
和.addInputOption('-vcodec', 'mjpeg')
。