在iPhone上使用FFMPEG音响改装(Using FFMPEG Audio conversion

2019-10-29 05:19发布

我使用的ffmpeg在iPhone上阅读从MMS服务器的WMA流,但我想流保存到使用的ffmpeg的ALAC编码器M4A档案,问题是,试图保存原始数据流,数据流处理使用avcodec_decode_audio2,文件甚至没有与WMA格式的认可,显然,没有打过,所以流之前转换成M4A(使用avcodec_encode_audio)我要肯定的是,流正在处理和正确保存。 人有experiencie做这种东西? 谢谢

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

}

Answer 1:

解码后,它不再是一个WMA流,这是一个原始音频流。 如果你想要写的WMA流,你写出来的解码前的数据。



文章来源: Using FFMPEG Audio conversion in the iPhone