2012-01-10 3 views
0

Я использую эту функцию для декодирования аудио, но нет звука:Декодирование WMA с FFmpeg на iPhone

int decodedBytes; 
decodedBytes = avcodec_decode_audio4(myData->pCodecCtx, myData->myFrame, &data_size, &myData->pkt); 

Данные успешно загружен, но я не знаю, куда идти отсюда, так как звука вообще нет.

+0

К «нет звука» вы имеете в виду вы не слышите звук или вы не получите никакой звуковой образец данные? ffmpeg только заботится о декодировании, вы должны вывести его на coreaudio, openal и т. д. –

+0

И, пожалуйста, укажите больше контекста, какова ваша цель? сообщения об ошибках или коды? более пример кода, который мне, вероятно, нужен. –

+0

У меня есть образцы данных, все поля AVCodecContext, AVCodec, AVFrame, AVPacket и AVFormatContext заполнены, но я не могу их выводить правильно, используя AudioQueueEnqueueBuffer. Вам нужно увидеть больше кода? Вы хотите, чтобы я отправил это вам по электронной почте? Спасибо за вашу помощь! – Winston

ответ

3

Если вы используете avcodec_decode_audio3 вместо швы работы:

decodedBytes = avcodec_decode_audio3(myData->pCodecCtx, samples, &data_size, &myData->pkt); 

Но вы, вероятно, следует использовать avcodec_decode_audio4 как avcodec_decode_audio3 швы устареет. Я не знаю много о ffmpeg/libav, но я бы предположил, что audio4 использует буферную систему в libav вместо того, чтобы вы проходили в буфере.

Может быть, это разница даст подсказку, как использовать Аудио4:

http://git.libav.org/?p=libav.git;a=commitdiff;h=f199f38573c4c02753f03ba8db04481038fa6f2e

+0

Спасибо! Я смотрю на это. – Winston

+0

Да, он работает с avcodec_decode_audio3, но мне нужно выяснить, как заставить его работать с помощью avcodec_decode_audio4. Благодаря! – Winston

+0

До сих пор я не мог сделать никаких полезных изменений для использования avcodec_decode_audio4. Любая идея о том, как это сделать? – Winston