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