我正在使用 fluent-ffmpeg 将文件推送到 RTMP 服务器,一切正常,但是当我在 Linux 操作系统中运行程序时,ffmpeg 会在几秒钟后停止
ffmpeg(flv)
// .inputOptions(['-readrate', '1']) //is unknown in linux
.inputOptions('-re') //ok for Windows but is not efficient if linux
.outputOptions(
'-c:v', 'libx264',
'-preset', 'superfast',
'-fflags', 'nobuffer',
'-tune', 'zerolatency',
'-c:a', 'aac',
'-ar', '44100'
)
.autopad()
.flvmeta()
.format('flv')
.on('start', function () {
console.log("ffmpeg Started!");
})
.on('error', function (err) {
console.log("ffmpeg Error!", err);
})
.on('end', function () {
started = false;
console.log("ffmpeg Finished!");
})
.output("rtmp://127.0.0.1:1935/live/61a7e51ea1bcbf3d9cbf428d")
.run()
答案1
您在 Linux 和 Windows 上使用的 ffmpeg 版本是否相同?readrate
在 Linux 中使用的版本可能不可用。
-re
相当于-readrate 1
(参见readrate
此处的部分https://ffmpeg.org/ffmpeg.html#Advanced-options。) 在可用的 ffmpeg 版本中readrate
,因此不应该存在效率较低的问题。但我不确定-re
在旧版本的 ffmpeg 中使用是否等同于-readrate 1
在新版本的 ffmpeg 中使用。如果-re
或-readrate 1
在同一版本的 ffmpeg 中使用。
编辑:我刚刚测试了-re
ffmpeg-readrate 1
的最新开发版本version N-105189-g9a194252c7
。当我在流预览中监控 CPU 使用率时,我发现两者之间没有明显的区别。