如何在iPhone上录制除Linear PCM之外的其他内容

时间:2009-03-24 10:05:29

标签: iphone core-audio

我很难在iPhone上录制线性PCM以外的东西:-( 我找到的样本(SDK的SpeakHere,Zdziarski和Sadun的书以及在trailsinthesand.com上的那些)都使用线性PCM,但我想要一个常用的压缩格式(没有ima4或其他名称......)。

我无法弄清楚如何调整要使用的示例代码,例如AAC,MP3或AMR。任何有关如何做的建议和提示都非常感谢!

(顺便说一句,我认为由于许可问题,MP3编码器和AMR编码器都不可用,但AAC确实存在,或者???)

编辑/更新:我偶然发现了Apple的“iPhone应用程序编程指南”中的以下文字:2009-01-06,第137页,部分:录制音频:
“您可以使用”iPhone OS中的首选音频格式“(第140页)中列出的任何格式录制音频,并且第140页上的首选音频格式为:”对于一次播放一种声音时的压缩音频,以及您不需要与iPod应用程序同时播放音频,请使用CAF或m4a文件中打包的AAC格式。“
因此,我将其解释为一个明确的迹象表明,以mAC文件记录的AAC格式录制音频确实,不仅可能,甚至更可取,这正是我想要的。但是,我仍然无法做到这一点?!

谢谢, /约翰

5 个答案:

答案 0 :(得分:4)

继续关注这些文档。在“Core Audio Essentials”中,“Core Audio Plug-ins:Audio Units and Codecs”部分指出:

  

iPhone OS包含录制内容   表2-5中列出的编解码器。尽你所能   看,MP3和AAC录音都没有   可用。这是由于高CPU   开销和随后的电池   排除这些格式。

表2-5列出了几种格式,但由于文字说明不包括您要查找的格式。如果您需要这些格式,则必须携带自己的编码器。

答案 1 :(得分:2)

可以在iPhone 3GS和iPod 2nd及以上版本中使用。他们有一个AAC硬件接口。 有一个Apple示例项目,它完全符合您的要求:

iPhoneExtAudioFileConvertTest

答案 2 :(得分:1)

使用faac将iPhone输出线性pcm文件转换为aac格式的提示:

我通过实验发现,你必须在faac的命令行版本(在Mac OS X上运行)上使用-X标志,这会“交换输入字节”。 (我想它会改变结尾。)

因此,例如,如果您在iPhone上录制文件linear.pcm,则可以运行:

faac -XP linear.pcm
在您的Mac上

将其转换为aac文件linear.aac

我猜这意味着如果您愿意,您可以在应用中使用faac进行转换,因为它是C库。

另请注意,从技术上讲,iPhone的音频服务输出的文件通常是CAF文件,核心音频格式,这是一种围绕一堆可能的编码的包装格式:Apple's docs on CAF。即使linear.pcmcaff标题开头,上面的命令行也能正常工作。

答案 3 :(得分:0)

你试过Lame mp3编码器吗?还是faac/faad AAC编解码器?您可以将它们嵌入ffmpeg以获取更多音频编解码器。

答案 4 :(得分:0)

为什么不试试传奇 Michael Tyson写的TPAACAudioConverter

  

TPAACAudioConverter是一个简单的Objective-C类,可以执行   将任何音频文件转换为AAC编码的m4a,异步   使用委托,或转换数据源类提供的任何音频   (提供直接录制到AAC)。