抛弃了原有的api,使用了新的api,为packet添加了spa,pps,便于播放!
const AVBitStreamFilter *absFilter = NULL; AVBSFContext *absCtx = NULL; AVCodecParameters *codecpar = NULL; //1. 找到相应解码器的过滤器 if(strcasecmp(codecName, "h264") == 0){ absFilter = av_bsf_get_by_name("h264_mp4toannexb"); }else if(strcasecmp(codecName, "h265") == 0){ absFilter = av_bsf_get_by_name("hevc_mp4toannexb"); } //2.过滤器分配内存 av_bsf_alloc(absFilter,absCtx) //3. 添加解码器属性 if(pFormatCtx->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO){ codecpar = pFormatCtx->streams[i]->codecpar; } avcodec_parameters_copy(absCtx->par_in, codecpar); //4. 初始化过滤器上下文 av_bsf_init(absCtx); //5. AVPacket处理 if(av_bsf_send_packet(absCtx, avPacket) != 0){ av_packet_free(&avPacket); av_free(avPacket); avPacket = NULL; continue; } while(av_bsf_receive_packet(absCtx, avPacket) == 0){ LOGE("开始解码"); av_packet_free(&avPacket); av_free(avPacket); continue; } avPacket = NULL; //6. 释放资源 av_bsf_free(&absCtx); absCtx = NULL;