1,打开音乐文件,调用av_open_input_file()

2,查找audio stream,调用av_find_stream_info()

3,查找对应的decoder,调用avcodec_find_decoder()

4,打开decoder,调用avcodec_open()

5,读取一桢数据包,调用av_read_frame()

6,解码数据包,调用avcodec_decode_audio3()

7,将解码后的数据返回

这样,得到解码后的PCM数据之后,我们可以播放、也可以encode成其他格式。

1,打开文件// return 0: OK

// return -1: arguments are wrong

int internal_open(const char* file)

int i = 0;

int res = 0;

LOGD("enter internal_open(), file name:%s", file);

if (file == 0 || strlen(file) == 0)

LOGE("%s, argument file is wrong!", __FUNCTION__);

return -1;

// try open file

if ((res = av_open_input_file(&m_format_ctx, file, NULL, 0, NULL)) != 0)

LOGE("%s, av_open_input_file() return failed!", __FUNCTION__);

return res;

// find streams information

if ((res = av_f

最近忙于使用ffmpeg播放音乐文件的项目,现将开发经验总结如下:一、解码音乐文件的大致流程如下:1,打开音乐文件,调用av_open_input_file()2,查找audio stream,调用av_find_stream_info()3,查找对应的decoder,调用avcodec_find_decoder()4,打开decoder,调用avcodec_open()5,读取一桢数据包,调用a... 请确保将`input. pcm `替换为您要 换的FLTP 格式 音频 文件 的实际 文件 名,并将`output. pcm `替换为您希望生成的S16 格式 音频 文件 的实际 文件 名。 此命令将输入 音频 文件 的采样 格式 从FLTP 换为S16,并将采样率设置为44100 Hz,声道数设置为2。 换后的 文件 将保存为输出 文件 。根据需要,您可以根据实际情况更改采样率和声道数。