我怎么可以记录AMR音频格式在iPhone上?
-
07-07-2019 - |
题
一个录音机并不需要压缩的线性PCM声音。压缩的 AMR
会做得很好。IPhone框架,建立录音很简单,但是唯一的实例,我已经找到了设置的音频格式(其中来自苹果)使用的对象.我已经尝试了其他各种组合的价值,但是似乎无法得到任何工作。
没有任何人有任何代码实际上记录 AMR
?
编辑: 年度部长级审查格式是一个选项,用于设置的数据类型,但其他选项(包的尺寸,框架大小等)。 似乎并不匹配无论我怎么集他们。
编辑: 这里就是我的PCM版本:
/*
If we want to use AMR instead of PCM:
AMR Format:
Sampling Frequency: 8 kHz/13-bit (160 samples for 20 ms frames), filtered to 200-3400 Hz
eight source codecs : 12.2, 1.2, 7.95, 7.40, 6.70, 5.90, 5.15, 4.75 kbit/s
generated frame length: 244, 204, 159, 148, 134, 118, 103, 95 bits per frame
*/
format->mFormatID = kAudioFormatLinearPCM;
format->mSampleRate = 8000.0; //8 kHz
format->mFramesPerPacket = 1; //1 frame per packet
format->mChannelsPerFrame = 1; //Mono
format->mBytesPerFrame = 2; //8/bits per frame (round up)
format->mBytesPerPacket = 2; //Same as bytes per frame
format->mBitsPerChannel = 16; //16-bit audio
format->mReserved = 0; //always 0
format->mFormatFlags = kLinearPCMFormatFlagIsBigEndian |
kLinearPCMFormatFlagIsSignedInteger |
kLinearPCMFormatFlagIsPacked;
解决方案
AMR编不支持编码/记录在iPhone上,尽管它支持播放:这就是原因kAudioFormatAMR恒的存在。
官方api 说支持的编码格式:
- ALAC (苹果无损)~>kAudioFormatAppleLossless
- iLBC (互联网的低比特率编,对于语音)~>kAudioFormatiLBC
- IMA/ADPCM (IMA4)~>kAudioFormatAppleIMA4
- 线性PCM ~>kAudioFormatLinearPCM
- µ法 ~>kAudioFormatULaw
- 一个法律 ~>kAudioFormatALaw
你可以试试这些格式或使用开放源AMR编码器 goldenmean 建议。
编辑:最新的官方api链接
其他提示
更新olegueret的官方文档链接(为什么他们隐藏这些东西?)
http://developer.apple.com/library/ios /#qa/qa2008/qa1615.html
我猜我的iPhone录音笔应用程序不支持AMR编解码器格式。
可以尝试将一些开源的AMR编码器实现集成到苹果的iPhone应用程序框架中,并尝试使录音机以AMR编码格式存储音频。 (我不知道苹果是否允许他们使用NDA /许可证。)
-AD
您可以将音频录制到未压缩的线性PCM缓冲区(圆形或环形),并在另一个线程中,使用您自己的AMR(或其他)压缩引擎转换此缓冲区中的数据,然后将压缩的音频数据保存到文件。
不隶属于 StackOverflow