如何通过ffmpeg解码mp3到pcm

时间:2013-06-10 15:08:57

标签: c ffmpeg mp3 decoding libav

我需要将mp3音频数据解码为pcm。我的数据以mp3标题开头。 Api-example.c不起作用,输出很奇怪:

enter image description here

命令ffmpeg -i input.mp3 output.wav 很棒,这就是我需要的。但我无法在代码中找到如何做到这一点。有谁知道,ffmpeg库的一些教程在哪里?感谢

编辑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帧样本)

如果我以大胆打开输出文件,正确的输出正确的参数是立体声(右),8bit pcm(错误)和半采样率(也是错误的),它发生了什么?

编码前的数据: 16位PCM 44100Hz,立体声

解码后的

数据: 8位PCM 22050Hz,立体声---> ??? !!!

我已经厌倦了......

1 个答案:

答案 0 :(得分: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()函数。

一些教程: