Использование FFMPEG Audio Conversion в iPhone - PullRequest
0 голосов
/ 24 июня 2010

Я использую ffmpeg в iPhone, читая поток wma с сервера mms, но я хочу сохранить поток в файл m4a, используя кодер ALAC в ffmpeg, проблема в том, что при попытке сохранить необработанный поток, поток обрабатывается с использованием avcodec_decode_audio2, файл даже не распознается в формате wma и, очевидно, не воспроизводится, поэтому перед преобразованием потока в m4a (с использованием avcodec_encode_audio) я хочу убедиться, что потоковая обработка обрабатывается и сохраняется правильно. Кто-нибудь испытывал подобные вещи? спасибо

P.S. Я пишу байтовый буфер, используя CFWriteStreamWrite, и все вроде бы нормально.

Мой код:

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 ....
     }
 }

}

1 Ответ

0 голосов
/ 24 июня 2010

После декодирования это больше не поток WMA, это необработанный аудиопоток.Если вы хотите записать поток WMA, вы должны записать данные перед декодированием.

...