理想情况下,我想在 MP3 和 FLAC 之间相互转换。我还需要能够编写这个脚本。
答案1
声音格式转换和简单转换的基本工具是SoX,声音处理程序的瑞士军刀。
sox foo.mp3 foo.flac
如果您运行的是 Debian,则对写入 MP3 的支持sox
会被破坏莱尼和挤(据我所知,同样的问题也会影响 Ubuntu 10.04 和 10.10)。这个错误该问题已于 2011 年 3 月上旬修复,因此获取最新的源代码(或获取sox
14.3.1-1build1 或更高版本的二进制文件)并重新编译应该可以工作。
编码的另一种选择.mp3
是lame
。它不读取.flac
,但您可以使用sox
或flac
从 转换.flac
为.wav
,然后lame
从.wav
转换为.mp3
。
flac -d foo.flac -c | lame - foo.mp3
答案2
答案3
奇怪的是,它的名字叫flac
。使用起来有点痛苦,或者当我用它编写转码作业脚本时又回来了。
答案4
你当然可以使用 SoX,正如其他人已经提到的那样,但我建议使用lame
和flac
:
你的第一个问题是从 到.mp3
(.flac
见下文为什么这通常是一个坏主意):
lame --decode <file>.mp3 - | flac -o <file>.flac -
这将使用 WAV 标头,这对于很长的文件(四个小时或更长时间的声音文件等)有限制。
你的第二个问题是如何从.flac
到.mp3
:
flac -d -c <file>.flac | lame - <file>.mp3
lame
这些设置假定默认质量级别等。阅读和/或 的手册页flac
以更好地了解如何调整它们。
现在,您可能有很长的录音,然后您想将其重新编码为有损格式。这是我的用例之一,我想出了这个:
.flac
从使用默认质量设置变为.mp3
使用默认质量设置:
flac -d --force-raw-format --endian=little --sign=signed <file>.flac -c | lame -r -s 48 - <file>.mp3
这假设原始格式是 PCM 数据。采样率 48kHz,两个通道。每个样本都是 16 位、小端、有符号整数。
请注意,此处的编码过程lame
使用默认质量设置,这对您来说可能不够复杂。
应该注意的是,从 MP3 文件制作 FLAC 文件是没有意义的,因为 MP3 已经是有损编码的。
从 MP3 -> FLAC 然后 FLAC -> MP3 没有任何意义,因为质量会因第一个原始 MP3 编码步骤而受到损害。
不过我假设你有一个合理的这个的用例...