在iPhone中使用FFMPEG音频转换

我在iPhone中使用ffmpeg,从mms服务器读取wma流,但我想使用ffmpeg中的ALAC编码器将流保存到m4a文件,问题是尝试保存原始流,处理流使用avcodec_decode_audio2,文件甚至无法用wma格式识别,显然,没有播放,所以在将流转换为m4a之前(使用avcodec_encode_audio)我想确保正在处理和保存正确的流。 有没有人经历过这种事情? 谢谢

PS我正在使用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 .... } } 

}

解码后,它不再是WMA流,而是原始音频流。 如果要编写WMA流,则在解码之前写出数据。