ijkplayer录像改造功能的问题集

FFmpeg中 avcodec_copy_context和codec deprecated方案如下:

将之前https://www.jianshu.com/p/e35566f0965a网上的ios录像功能函数在开始录像函数的里面要修改,由于上面提到int ffp_start_recording_l(FFPlayer*ffp,constchar*file_name)函数冲突问题,修改如下:

for(inti =0; i < is->ic->nb_streams; i++) {

.........

 AVCodec*codec =avcodec_find_decoder(in_stream->codecpar->codec_id);

        AVStream *out_stream = avformat_new_stream(ffp->m_ofmt_ctx, codec);//avformat_new_stream(ffp->m_ofmt_ctx, in_stream->codec->codec);

...........

AVCodecContext *pCodecCtx = avcodec_alloc_context3(codec);

        intret =avcodec_parameters_to_context(pCodecCtx, in_stream->codecpar);

        //if (avcodec_copy_context(out_stream->codec, in_stream->codec) < 0)

        if(ret <0)

        {

            av_log(ffp, AV_LOG_ERROR, "Failed to copy context from input to output stream codec context\n");

            goto end;

        }

        pCodecCtx->codec_tag=0;

        if(ffp->m_ofmt_ctx->oformat->flags&AVFMT_GLOBALHEADER) {

            pCodecCtx->flags|=CODEC_FLAG_GLOBAL_HEADER;

        }

        ret =avcodec_parameters_from_context(out_stream->codecpar, pCodecCtx);              

        if(ret <0) {

            printf("Failed to copy context input to output stream codec context\n");

            goto end;

        }

        //out_stream->codec->codec_tag = 0;

//        if (ffp->m_ofmt_ctx->oformat->flags & AVFMT_GLOBALHEADER) {

//            out_stream->codec->flags |= CODEC_FLAG_GLOBAL_HEADER;

//        }

}

对应修改看上面注释都是和新修改是一一对应的。

参考资料:

 https://www.jianshu.com/p/e35566f0965a

https://www.2cto.com/kf/201704/634731.html

https://blog.csdn.net/leixiaohua1020/article/details/25422685

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容