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

C 如何以编程方式转换音频(diy)?,c,flac,audio-converter,C,Flac,Audio Converter,我正在考虑写一个FLAC到ALAC和/或FLAC到AAC的转换器,可能是用C。根据格式规范,它是否像读取一种格式并输出另一种格式那样简单 任何关于方法、语言等的提示都会很好!谢谢 自己一路做?听起来很难 这就像以一种格式阅读并输出另一种格式一样“简单”,但这些小细节实际上是巨大的庞然大物,有很多相当复杂的数学 基本上,你必须阅读FLAC,解析其容器格式,将FLAC音频解码成某种中间形式,将其无损编码到Apple中,然后将其放入MPEG4音频容器中(因为ALAC就是这样使用的) 如果你放弃了自己做

我正在考虑写一个FLAC到ALAC和/或FLAC到AAC的转换器,可能是用C。根据格式规范,它是否像读取一种格式并输出另一种格式那样简单


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

自己一路做?听起来很难

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

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

如果你放弃了自己做这一切,并使用库来解码FLAC和编码ALAC,这一点都不难,请注意——只是编码器和解码器并不容易编写


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

不,这一点都不简单

就DSP而言,FLAC解码相对简单。但libav中仍然有大约3000行代码,其中不包括它所使用的库中其他地方的一堆支持代码

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

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


(挑剔的人会注意到代码行并不是一个很复杂的度量标准。我知道这一点——我只是把它当作一个“大概的数字”来使用。)

谢谢你的回答,我将研究如何使用这些库。我不知道这有多艰难!谢谢你的回复,在你的答案和cha0site的答案之间,我一定会去图书馆看看