Pergunta

Um gravador de voz não precisa descompactado áudio Linear PCM. AMR comprimido faria muito bem. O quadro iPhone construído para gravação de áudio é suficiente simples, mas os únicos exemplos que eu encontrei para configurar o formato de áudio (que vêm da Apple) uso LinearPCM. Eu tentei várias outras combinações de valores, mas não consigo obter qualquer coisa para trabalhar.

Alguém tem qualquer código que realmente registra AMR?

Editar: O formato AMR é uma das opções para definir o tipo de dados, mas as outras opções (tamanho do pacote, tamanho do quadro, etc.) parecem não corresponder-se não importa o que eu defini-los como.

Editar: Aqui está o que eu tenho para a versão 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;
Foi útil?

Solução

AMR codec não é suportado para codificação / gravação no iPhone, embora ele é suportado para reprodução:. Esta é a razão existe a constante kAudioFormatAMR

Oficial api diz que formatos de codificação suportados são :

  • ALAC (Apple Lossless) ~> kAudioFormatAppleLossless
  • iLBC (internet de baixa taxa de bits Codec, para o discurso) ~> kAudioFormatiLBC
  • IMA / ADPCM (IMA4) ~> kAudioFormatAppleIMA4
  • linear PCM ~> kAudioFormatLinearPCM
  • µ-lei ~> kAudioFormatULaw
  • a-lei ~> kAudioFormatALaw

Você pode tentar um destes formatos ou usar um codificador AMR fonte aberta como goldenmean sugere.

Editar : Atualizado ligação Oficial api

Outras dicas

Para ligação de actualização de olegueret a documentação oficial (por que esconder isso?)

http://developer.apple.com/library/ios /#qa/qa2008/qa1615.html

Eu acho formato AMR codec não é suportado meu iPhone app gravador de voz.

Pode ser um pode tentar integrar alguns open-source, a implementação do codificador AMR em estrutura de aplicativos iPhone dos maçãs e tente fazer a loja gravador de voz do áudio em AMR codificado formato. (Eu não sei se isso é permitido pela Apple pelo seu NDA / licença).

-AD

Você pode gravar áudio para um buffer Linear PCM não comprimido (circular ou anel), e, em outro segmento, os dados converter neste tampão, usando seu próprio AMR (ou outro) compressão do motor, antes de salvar os dados de áudio comprimidos a um arquivo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top