为啥 ffmpeg 使用 flac 编码器对 ogg 文件进行编码?

Posted

技术标签:

【中文标题】为啥 ffmpeg 使用 flac 编码器对 ogg 文件进行编码?【英文标题】:why ffmpeg encodes a ogg file with flac encoder?为什么 ffmpeg 使用 flac 编码器对 ogg 文件进行编码? 【发布时间】:2016-09-08 12:18:49 【问题描述】:

我想把音频转成ogg文件,我的命令是:

ffmpeg -i in.wav out.ogg

我发现输出流编码器是flac而不是ogg或vorbis!

ffmpeg 输出信息如下所示:

ffmpeg version 3.1.2 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.9.2 (GCC)
Guessed Channel Layout for Input Stream #0.0 : mono
Input #0, wav, from 'in.wav':
  Metadata:
    encoder         : Lavf55.48.100
  Duration: 00:00:11.97, bitrate: 256 kb/s
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 16000 Hz, 1 channels, s16, 256 kb/s
[ogg @ 0x8003e020] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead.
Output #0, ogg, to 'out.ogg':
  Metadata:
    encoder         : Lavf57.41.100
    Stream #0:0: Audio: flac, 16000 Hz, mono, s16, 128 kb/s
    Metadata:
      encoder         : Lavc57.48.101 flac
Stream mapping:
  Stream #0:0 -> #0:0 (pcm_s16le (native) -> flac (native))

有人告诉我为什么吗?谢谢!

【问题讨论】:

【参考方案1】:

您需要一个带有 libvorbis 的 ffmpeg 构建来编码到 Vorbis。根据您构建的横幅,它不存在,因此它使用 Ogg 支持的原生编码器 Flac。

从here 获取适用于您的操作系统的全功能二进制文件。

【讨论】:

由 Flac 编解码器编码的 *.ogg 音频文件实际上是 ogg 音频还是实际上只是一个 flac 音频但以扩展名 ogg 命名? 它是 Ogg 容器中的 FLAC 音频流。音频的本机编解码器是 Vorbis。 知道了,谢谢!

以上是关于为啥 ffmpeg 使用 flac 编码器对 ogg 文件进行编码?的主要内容,如果未能解决你的问题,请参考以下文章

FFmpeg命令行将mp3/wav/flac/ape转pcm

使用 ffmpeg 将 .flac 转换为 .mp3,保留所有元数据

python调用ffmpeg批量转换音频flac、mp3、m4a

在MacOS上用ffmpeg批量转换flac为mp3

ffmpeg 从 flac 转换为 wav

markdown FLAC到MP3 - ffmpeg