Utilisation de la conversion audio FFMPEG dans l’iPhone

J’utilise ffmpeg sur l’iPhone pour lire un stream wma à partir d’un serveur mms, mais je souhaite enregistrer le stream dans un fichier m4a à l’aide de l’encodeur ALAC dans ffmpeg. Le problème est que vous essayez d’enregistrer le stream brut, le stream traité. En utilisant avcodec_decode_audio2, le fichier n’est même pas reconnu avec le format wma et, bien entendu, n’est pas lu. Par conséquent, avant de convertir le stream en m4a (avec avcodec_encode_audio), je veux être sûr que le streaming est traité et enregistré correctement. Quelqu’un a-t-il fait l’expérience de ce genre de choses? Merci

Post-scriptum J’écris le tampon d’octets en utilisant CFWriteStreamWrite, et tout semble bien se passer.

Mon code:

while (av_read_frame(mms_IOCtx, &_packet) >= 0) { if (_packet.stream_index == audioStreamIdx) { uint8_t *_packetData = _packet.data; int _packetSize = _packet.size; // Align output buffer uint8_t audio_buf[(AVCODEC_MAX_AUDIO_FRAME_SIZE * 3) / 2 + 16]; int16_t *aligned_buffer; size_t buffer_size; int audio_size, len; buffer_size = sizeof(audio_buf); aligned_buffer = align16(audio_buf, &buffer_size); while (currentState != STATE_CLOSED && (_packetSize > 0)) { audio_size = buffer_size; len = avcodec_decode_audio2(mms_CodecCtx, aligned_buffer, &audio_size, _packetData, _packetSize); // call to the method that write the bytes .... } } 

}

Après le décodage, ce n’est plus un stream WMA, c’est un stream audio brut. Si vous souhaitez écrire le stream WMA, vous devez écrire les données avant le décodage.