/*@param avctx编解码器上下文
*@param [out] frame用于存储解码音频样本的AVFrame
*@param [out] got_frame_ptr如果没有帧可以解码则为零,否则为非零
*@param [in] avpkt包含输入缓冲区的输入AVPacket
*@return 如果在解码期间发生错误,则返回否定错误代码,否则返回从输入AVPacket消耗的字节数。
*/
int avcodec_decode_audio4 ( AVCodecContext * avctx, AVFrame * frame, int * got_frame_ptr, const AVPacket * avpkt )
使用流程如下:
1.1 使用avformat_open_input(&inFmt,filename,NULL,NULL)函数获取infmt, 记得infmt要初始化为NULL。
这个函数的作用是打开一个流,同时获取头文件。
1.2 查找音频流
/* Find audio stream */
audioStreamNum=-1;
for(i=0; i<inFmt->nb_streams; i++) {
if(inFmt->streams[i]->codec->codec_type==AVMEDIA_TYPE_AUDIO &&
audioStreamNum < 0) {
audioStreamNum=i;
}
}
if(audioStreamNum==-1)
return -1;
inCodecCtx=inFmt->streams[audioStreamNum]->codec;
1.3 找到解码器
/* find the audio decoder */
co