Fluent-ffmpeg 如何在不丢失任何声音的情况下减小输出文件的大小

Fluent-ffmpeg how to reduce the size of the output file without losing any sound

是否有任何最佳实践可以将转码输出文件的大小保持在特定大小以下?

我需要将它保持在 <100 MB 以下,但不知何故我最终得到了很大的输出文件。 问题是我的(测试)视频文件是 600kb 而生成的 output.wav 4MB。 这与我的预期相去甚远。

var proc = new ffmpeg({
        source: file,
        nolog: false
    });
    proc.addInputOption('-acodec libopus');

    format = "wav";

    proc.addOptions([
        '-f ' + format,
        '-ab 192000',
        '-ar 16000',
        '-vn'
    ]);

这就是我将参数传递给 ffmpeg 库的方式。 我应该在此处更改哪些参数以减小尺寸并保持最大值。质量?

使用 WAV 作为输出格式会使 ffmpeg 选择未压缩的 PCM 音频,其中比特率设置无效。您可能想阅读此 post:What is a Codec (e.g. DivX?), and how does it differ from a File Format (e.g. MPG)?

如果您使用的是命令行,则只需将音频流复制到输出文件而不触及比特流 (-c:a copy):

ffmpeg -i input.webm -vn -c:a copy output.opus

在 fluent-ffmpeg 中,我想这是要走的路:

ffmpeg('input.webm')
  .addInputOption('-acodec libopus')
  .noVideo()
  .audioCodec('copy')
  .output('output.opus')

您也可以通过写入 output.webm.

作为输出格式 webm