Я использую 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 ....
}
}
}