我正在创建一个Node JS应用程序,该应用程序采用m-jpeg图像流,并动态构建MPEG-1流。我现在正在利用流利的ffmpeg。蒸汽旨在连续且长寿命。图像以恒定的帧速率自由流动。
不幸的是,使用image2pipe
并输入-vcodec mjpeg
,似乎ffmpeg需要等到处理开始前所有图像都准备就绪。
当图像到达时,有没有办法让ffmpeg管道输入并立即输出?
这是我目前的Node 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/
答案 0 :(得分:0)
要获得直播,请尝试切换image2pipe
rawvideo
:
.fromFormat('rawvideo')
.addInputOption('-pixel_format', 'argb')
.addInputOption('-video_size', STREAM_WIDTH + 'x' + STREAM_HEIGHT)
这将立即以非常低的延迟对视频进行编码。
您可以删除.fromFormat('image2pipe')
和.addInputOption('-vcodec', 'mjpeg')
。