我有几百个 wma 文件,我想将它们转换为其他格式,主要是因为我的整个库都包含 mp3、aac 或 m4a,因此它们都与 Apple 便携式设备兼容,并且我使用 iTunes 作为这些设备的接口。所以我知道 ffmpeg、realplayer、mediamonkey、itunes 都可以将 wma 转换为其他格式,但我的问题是 (i) 最好的“工作流程”是什么最小化质量损失和 (ii) 使用什么目标格式/编解码器。是的,我知道无损到无损通常不是一个好主意,而且我可能会有一些质量下降,但我会尝试找到最好的方法。我能想到:
使用 ffmpeg 直接转换(但要使用什么设置?使用 192 kbps 或更高是否有帮助,或者这是否毫无意义,实际上最好使用与原始文件完全相同的比特率,即 128 kbps?Quid 采样率,也是 44.1 或更高?
通过中间格式(wav 或 flac)进行转换,因此第一步提取所有可能的音频信息,然后在第二步再次进行编码。
我对 mp3 或 m4A(或 aac,但我知道这只是同一编解码器的不同文件扩展名?)持中立态度,所以将 wma 转换为其中任何一种会有什么不同吗?(我知道一个特定的 mp3 与 m4a 问题这里,所以我的问题实际上与使用 wma 作为源文件有关。
wma 文件具有以下属性:Windows Media Audio V8 - 128 kbps、44.1 kHz、2 通道、16 位
答案1
使用具有合理编码选项的良好编码器实现。然后进行实验,看看什么是您可以接受的。
使用 libfdk_aac 的 AAC
这是 支持的最好的 AAC 编码器ffmpeg
。但是,它被认为与 GPL 不兼容,因此你必须编译它(尽管您可能能够找到一个[违反 GPL 的]构建)。VBR 示例:
ffmpeg -i input.wma -c:a libfdk_aac -vbr 5 output.m4a
使用原生 FFmpeg AAC 编码器的 AAC
原生 FFmpeg AAC 编码器不错,但您需要给它足够的比特率才能听起来和 libfdk_aac 一样好。尝试使用比特率 ( -b:a
) 值来获得您可以接受的值。CBR 示例(VBR 还不太好):
ffmpeg -i input.wma -c:a aac -b:a 192k output.m4a
如果您ffmpeg
抱怨该编码器是“实验性的”,那么它已经过时了,您应该更新。
使用 libmp3lame 的 MP3
对于 MP3,最佳选择是 libmp3lame。VBR 示例:
ffmpeg -i input.wma -c:a libmp3lame -q:a 2 output.mp3
另请参阅
问答
直接转换使用
ffmpeg
?
是的。ffmpeg
它可以解码几乎任何东西,它可以保留元数据,它支持许多编码器和格式,您可以控制它的功能,并且可以将它放在循环中来编码目录中的所有文件(该部分需要简单的脚本)。
但是要使用什么设置呢?使用 192 kbps 或更高速度是否有帮助,还是毫无意义?
这取决于编码器以及您想要 VBR 还是 CBR。请参阅“另请参阅”链接以获取更多信息、详细信息和示例。
实际上使用与原始文件完全相同的比特率,即 128 kbps,会更好吗?
我经常看到用户尝试这样做,但重复使用相同的比特率并不是最佳选择。你怎么知道编码原始文件的人知道自己在做什么?你怎么知道编码器本身是否糟糕?不同的编码器效率各不相同。每种格式本身的差异都很重要。此外,当重新编码有损输入时,你应该注意文件与原始文件不同:数据已被破坏,并且包含原始文件中不存在的伪影,因此即使使用相同的编码器和相同的比特率,也必须重新编码这些伪影,因为它们是文件的一部分,从而导致更糟糕的输出。
英镑采样率也是 44.1 或更高?
不要担心采样率。ffmpeg
将使用与输入相同的速率。
通过中间格式(wav 或 flac)进行转换,因此在第一步中提取所有可能的音频信息,然后在第二步再次编码?
ffmpeg
这是不必要的步骤。无论如何都要将音频完全解码为原始 PCM 音频,因此无需事先这样做。
我对 mp3 或 m4A(或 aac,但我知道这只是同一编解码器的不同文件扩展名?)持中立态度,因此将 wma 转换为其中任何一个会有什么区别吗?(我知道这里有一个特定的 mp3 与 m4a 问题,所以我的问题实际上与将 wma 作为源文件有关。)
源是否为 WMA 并不重要。使用您首选的设备或软件更支持的输出格式。我相信 Apple 产品同时支持 MP3 和 AAC,我猜它在“库”中使用的是 M4A 容器中的 AAC 音频,所以我可能会使用这种组合。