我使用的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 ....
}
}
}