如何以编程方式转换音频(diy)?

时间:2012-06-14 16:55:36

标签: c flac audio-converter

我正在考虑将FLAC写入ALAC和/或FLAC到AAC转换器,可能在C中。根据格式规范,它是否只能读取一种格式并输出另一种格式?

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

2 个答案:

答案 0 :(得分:4)

一路做好吗?听起来很难。

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

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

如果你放弃了自己完成这一切,并使用库来解码FLAC和编码ALAC,那就不难了 - 请注意,编码器和解码器的写入并不简单。 / p>

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

答案 1 :(得分:3)

不,这一点都不简单。

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

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

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

(挑剔的人会注意到代码行不是复杂程度的重要标准。我知道这一点 - 我只是在这里使用它作为“棒球场”。)