我正在尝试使用 ffmpeg 来.mkv
更改视频的音轨质量。我想降低音频部分的比特率(至 16 kbps),而不对视频进行任何修改。然而,当我使用 ffmpeg 命令时
ffmpeg -i input.mkv -b:a 16k output.mkv
声音没有改变,视频被压缩了。我试过了
ffmpeg -i input.mkv -ab 16k output.mkv
也遇到了同样的问题。当我尝试
ffmpeg -i input.mkv -ab 16k -acodec aac -strict experimental output.mkv
我收到错误:
oggvorbis_encode_init: init_encoder failed
有什么办法可以解决这个问题吗?
答案1
默认情况下,ffmpeg 将重新编码任何没有明确选择的流流复制模式,默认视频编码比特率(取决于编码器)可能太低,无法提供足够的输出质量。您可以复制视频作为-codec:v copy
输出选项,而不是重新编码。
对于如此低的音频比特率,我建议使用支持 HE-AAC 的 AAC 编码器。此示例改编自FFmpeg 和 AAC 编码指南立体声输出时每通道大约使用 16kb/s:
ffmpeg -i input.mkv -codec:v copy -codec:a libfdk_aac -profile:a aac_he_v2 -b:a 32k output.mkv
根据输入音频的内容,如此低的比特率即使使用此编码器,听起来可能也不会那么好。请注意,HE-AACv2可能不受支持被你的目标解码器,你可能需要编译 ffmpeg为了libfdk_aac
支持。
Opus 音频是另一种很好的格式,但上次我检查时发现 Matroska 容器中 Opus 的规格尚未最终确定;不过传闻我认为正在取得进展。