【问题标题】:Fluent-ffmpeg how to reduce the size of the output file without losing any soundFluent-ffmpeg 如何在不丢失任何声音的情况下减小输出文件的大小
【发布时间】:2017-07-03 18:21:02
【问题描述】:

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

我需要将它保持在

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 文件?这将使用未压缩的原始 PCM 音频,这就是您获得如此大的输出文件的原因。如果您不想重新编码(即不损失质量),您不能按原样复制音频流并将其写入单独的.opus 文件吗?
  • 此外,我真的建议您先在命令行上尝试这些命令 - 然后很明显 ffmpeg 在做什么,它正在选择哪些编解码器,实际比特率是多少等. 只有当您确定正确的命令是什么时,才将其翻译成 fluent-ffmpeg。在询问 ffmpeg 命令行问题时,您将获得比一些实现它的库更好的帮助。 (除非问题出在图书馆本身,很明显。)
  • @slchk,我限于有特定的扩展; flac, wav, 音频/webm 音频/webm;codecs=opus, audio/webm;codecs=vorbis 。我尝试了其他输出格式,但结果还是很大,就像 wav 文件一样。 ffmpeg -acodec libopus -i 2.webm -vn output1x.flac 我还应该在这里指定什么以得到一个小文件?

标签: ffmpeg fluent-ffmpeg


【解决方案1】:

使用 WAV 作为输出格式使 ffmpeg 选择未压缩的 PCM 音频,其中比特率设置无效。您可能想阅读这篇文章: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.webmwebm 作为输出格式。

【讨论】:

  • @slchk,再次感谢您的回复。但是当我播放它时,生成的作品文件总是从第 4 秒或第 5 秒开始。似乎第一秒丢失了。知道为什么会这样吗?请检查我为这个问题创建的这个新问题。 stackoverflow.com/questions/45063388/…
猜你喜欢
  • 1970-01-01
  • 2016-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-04
  • 1970-01-01
  • 2011-08-23
  • 1970-01-01
相关资源
最近更新 更多