2

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

在此处输入图像描述

命令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(错误)和半采样率(也错误),发生了什么?

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

解码后的数据:8bit PCM 22050Hz,立体声--->???!!!

我厌倦了这个......

4

1 回答 1

1

一种方法是在代码中调用可执行文件:

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

另一种方法是使用 API。此处的示例,请参阅该audio_decode_example()文件中的函数。

一些教程:

于 2013-06-10T16:34:53.250 回答