为什么在 Linux 中来自 nodejs 的“ffmpeg”命令会在几秒钟后结束

为什么在 Linux 中来自 nodejs 的“ffmpeg”命令会在几秒钟后结束

我正在使用 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 中使用。

编辑:我刚刚测试了-reffmpeg-readrate 1的最新开发版本version N-105189-g9a194252c7。当我在流预览中监控 CPU 使用率时,我发现两者之间没有明显的区别。

相关内容