0

我正在考虑用 C 语言编写一个 FLAC 到 ALAC 和/或 FLAC 到 AAC 转换器。根据格式规范读取一种格式并输出另一种格式是否简单?

任何关于方法、语言等的提示都会很棒!谢谢!

4

2 回答 2

4

全程自己做?听起来很难。

它就像以一种格式阅读并输出另一种格式一样“简单”,但小细节实际上是巨大的庞然大物,有很多相当复杂的数学。

基本上,您必须阅读 FLAC,解析其容器格式,将 FLAC 音频解码为某种中间形式,将其编码为 Apple Lossless,然后将其放入 MPEG4 音频容器中(因为这是 ALAC 使用的)。

如果您放弃自己做这一切,并使用库来解码 FLAC 和编码 ALAC,那一点也不难,请注意 - 只是编码器和解码器不容易编写。

查看 libflac 和 libavcodec 的编码器/解码器,然后围绕它们编写程序应该不会太难。

于 2012-06-14T17:06:16.660 回答
3

不,一点都不简单。

就 DSP 而言,FLAC 解码相对简单。但它仍然是 libav 中的大约 3,000 行代码,其中不包括位于它使用的库中其他位置的一堆支持代码。

AAC 编码极其复杂,因为它是有损编解码器;因此,编码到 AAC 涉及许多高度主观的心理声学决定。libav 中的 AAC 编解码器有将近 12,000 行代码(同样,不包括生成 MPEG4 容器的代码),其结果甚至不是特别高质量。如果您对MDCT音频编码还不是很熟悉,那么尝试从头开始编写编码器将是徒劳的。

您可能最好使用已经能够执行此转换的库(如 libav!)。不要试图从头开始编写它。

(挑剔的人会注意到,代码行数并不是衡量复杂性的重要指标。我知道这一点——我只是在这里将其用作“球场数字”。)

于 2012-06-14T17:11:45.637 回答