我想使用lame mp3 encoder在iPhone上编码音频数据并将其保存到文件中。我可以使用lame进行编码,我可以使用Extended Audio File Services来编写音频文件。我想将两者结合起来,以便我的代码保持一致,并且在编写不同格式的音频文件时不使用两种粘合代码。
我能想象的一个可能的解决方案是将自己的AudioConverter
(就像AudioConverterNew创建的那个)包裹在跛脚周围,以便我可以将此转换器与Extended Audio File Services函数一起使用,最突出的是ExtAudioFileWrite
。你能帮助我实现这个解决方案或另一个能够与iOS提供的API一致地编写mp3文件吗?
更新
经过大量的试验后,我确信Apple提供的AudioConverter
结构对于应用开发者来说是不可扩展的。因此,我正在使用以下工作:
我创建了自己的抽象AudioEncoder
类,它声明了编码音频数据并将其写入文件的方法。然后我将这个AudioEncoder
类子类化,一个用于包装ExtAudioFileRef
函数,另一个用作LAME的包装。我现在可以在任何想要编码音频的地方使用这些子类,但是如果我编码为本机支持的格式或者我用外部库添加的格式,我就不必在意了,因为我的编码器类隐藏了所有的API-底层编码器的细节。如果我以后想要添加OGG或FLAC,这将很容易,因为我只需要编写AudioEncoder
的其他子类来包装相应的OGG或FLAC库。