2013-06-10 1 views
1

Мне нужно декодировать mp3 аудио данные в pcm. У меня есть данные, которые начинаются с mp3-заголовка. Апи-example.c не работает, выход странно:Как декодировать mp3 в pcm от ffmpeg

enter image description here

команда ffmpeg -i input.mp3 output.wav велика, это то, что мне нужно. Но я не могу найти способ сделать это в коде. Кто-нибудь знает, где какой-то учебник с библиотекой ffmpeg? Благодаря

Edit 2.7.13:

Привет снова, я перестроил пример декодирования метод аудио из FFmpeg и моя проблема, вероятно, здесь:

len = avcodec_decode_audio4(avCodecContext,avFrame, &got_frame,&avPacket);  
int data_size = av_samples_get_buffer_size(NULL,avFrame->channels,avFrame->nb_samples,AV_SAMPLE_FMT_S16P,1); 

DATA_SIZE является размер кадра данных от декодера, это зависит от количества каналов, количества выборок данных и типа данных (мои данные - 16 бит PCM-стерео, закодированные в mp3 до 1152 образцов mp3-кадра)

Если я открываю выходной файл в духе, исправьте параметры, которые дают соответствие ct, стерео (справа), 8 бит/см (неверно) и половина частоты дискретизации (также неправильно), что случилось?

данные перед кодированием: 16bit PCM 44100Hz, стерео

данные после декодирования: 8bit PCM 22050 Гц, стерео ---> ??? !!!

Я устал от этого ....

ответ

1

Один из способов сделать это, чтобы вызвать исполняемый файл в коде:

system("ffmpeg -i input.mp3 output.wav"); //assuming the executable name is ffmpeg and its location is in PATH environment variable 

Другой способ заключается в использовании API. Пример here, см. Функцию audio_decode_example() в этом файле.

Некоторые учебники:

+0

да , но мне нужно перестроить этот метод для обработки буфера и добавить некоторые конкретные данные ... –

+0

И API, который я пробовал. Результатом этого примера api является изображение выше. –

+0

@ Meph- В коде есть обработка буфера (я не уверен на 100%, если это то, что вам нужно, но). Если вы собираетесь использовать код, вам, вероятно, придется изменить параметр из 'avcodec_find_decoder (AV_CODEC_ID_MP2)' на 'AV_CODEC_ID_MP3'. – user2448027