Как я могу записать аудио формат AMR на iPhone?
диктофон не нуждается в несжатом линейном аудио PCM. Сжатый AMR
было бы неплохо. Платформа iPhone, построенная для записи звука, достаточно проста, но единственные примеры, которые я нашел для настройки аудиоформата (которые исходят от Apple), используют LinearPCM. Я пробовал различные другие комбинации значений, но, похоже,ничего не получается.
есть ли у кого-нибудь код, который фактически записывает AMR
?
Edit: ЕОМ формат является одним из вариантов установки типа данных, но другие параметры (размер пакета, размер кадра и т. д.) не совпадают ни на что я поставил их.
Edit: вот что у меня есть для версии 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;
4 ответов
кодек AMR не поддерживается для кодирования / записи на iPhone, хотя он поддерживается для воспроизведения: именно по этой причине существует константа kAudioFormatAMR.
официальный api написано, что поддерживаемые форматы кодирования:
- РКК (яблоко без потерь) ~ > kAudioFormatAppleLossless
- С регистрацией или входом (кодек с низким битрейтом интернета, для речи) ~ > kAudioFormatiLBC
- IMA / ADPCM (IMA4) ~> kAudioFormatAppleIMA4
- линейный PCM ~> kAudioFormatLinearPCM
- µ-закон ~> kAudioFormatULaw
- a-law ~> kAudioFormatALaw
вы можете попробовать один из этих форматов или использовать кодировщик AMR с открытым исходным кодом как goldenmean предполагает.
редактировать: обновлена официальная ссылка api
чтобы обновить ссылку olegueret на официальную документацию (почему они скрывают этот материал?)
http://developer.apple.com/library/ios/#qa/qa2008/qa1615.html
Я думаю, формат кодека AMR не поддерживается моим приложением для диктофона iPhone.
может быть, можно попробовать интегрировать некоторые с открытым исходным кодом, реализация AMR encoder в рамки приложений iPhone яблок и попытаться сделать диктофон хранить аудио в формате, закодированном AMR. (я не знаю, разрешено ли это apple их NDA/лицензией).
-AD
вы можете записывать звук в несжатый линейный буфер PCM (круговой или кольцевой), а в другом потоке конвертировать данные в этот буфер, используя свой собственный AMR (или другой) механизм сжатия, перед сохранением сжатых аудиоданных в файл.