要连接和转码音频文件,这是您要遵循的工作流程:
- 将输入的音频文件解码为WAV / PCM数据,
- 串联WAV,
- 编码WAV以输出音频编解码器文件。
这些步骤中的处理将对WAV数据执行级联,这是最容易处理且损耗最小的。而且由于您仍要进行代码转换,因此您必须在此过程中的某处解码为WAV。不妨利用它。
这是我建议的步骤。我们将ffmpeg
用于解码,sox
连接和oggenc
编码。你可以代替其他工具的任何步骤- mencoder
与其他正常工作的解码器和编码的Ogg可以作为编码器的任何工具-但我想你会捉襟见肘找到一个比一个更好的工具sox
为级联。
find *.wma -exec ffmpeg -i {} outfile.{}.wav \;
(这ffmpeg -i infile.wma outfile.infile.wma
在当前目录中的每个WMA文件上运行)
sox outfile* all.wav
(注意outfile
与我们在步骤1中给输出文件的前缀相同)
oggenc all.wav all.ogg
您可能需要在此处进行一些质量设置,但这将提供不错的质量默认设置。我没有获得喜欢的结果ffmpeg
,但您可能更喜欢它,因此下面提供了ffmpeg的示例。
请注意,sox
除非所有WAV文件都使用相同的格式,否则该命令将无法正常工作-例如,如果某些文件为22kHz,而某些文件为44.1kHz,则需要sox
通过命令行开关来识别它们,并指定所需的格式。输出。我不知道任何命令行工具能够像sox
串联步骤一样使用。您可能会在第1步中输出为原始PCM格式并cat
在第2 步中使用,但这仅在它们具有相同格式的情况下才有效,并且您需要对解码器和编码器都非常特定他们应该期望的格式。
使用ffmpeg编码:网上有很多帖子抱怨ffmpeg的内置Vorbis编码器不是很好。如果您的版本是使用libvorbis支持构建的,请-acodec libvorbis
改用。示例命令行:
ffmpeg -i all.wav -acodec libvorbis -ac 2 -ab 128k all.ogg