我想在 iPhone 上使用lame mp3 编码器对音频数据进行编码并将其保存到文件中。我可以使用 lame 进行编码,也可以使用扩展音频文件服务来编写音频文件。我想将两者结合起来,这样我的代码是一致的,在编写不同格式的音频文件时不使用两种胶水代码。
我可以想象的一个可能的解决方案是将自己的AudioConverter
(如AudioConverterNew创建的)包裹在 lame 周围,以便我可以将此转换器与扩展音频文件服务功能一起使用,最突出的是ExtAudioFileWrite
. 你能帮我实现这个解决方案或另一个可以使用 iOS 提供的 API 一致地编写 mp3 文件的解决方案吗?
更新:
经过多次反复试验,我确信AudioConverter
Apple 提供的结构对于应用程序开发人员来说是不可扩展的。因此,我正在使用以下解决方法:
我创建了自己的抽象AudioEncoder
类,它声明了用于编码音频数据并将其写入文件的方法。然后我对这个AudioEncoder
类进行了子类化,一个用于包装ExtAudioFileRef
函数,一个作为 LAME 的包装器。我现在可以在任何我想对音频进行编码的地方使用这些子类,但我不必关心是否编码为原生支持的格式或我使用外部库添加的格式,因为我的编码器类隐藏了所有 API-底层编码器的详细信息。如果我以后想添加 OGG 或 FLAC,这将很容易,因为我只需要编写额外的子类AudioEncoder
来包装各自的 OGG 或 FLAC 库。