标题
[ffmpeg]FFmpeg更新太快,很多教程都跟不上最新的API了 [zt]
clq
浏览(514) +
2021-07-15 18:11:19 发表
编辑
关键字:
[2021-07-26 21:00:47 最后更新]
https://www.bilibili.com/read/cv2680761/
--------------------------------------------------------
供参考,有些说法不一定正确,也不太完整。比如 register_all 那些很多版本下还是需要的。
--------------------------------------------------------
FFmpeg更新太快,很多教程都跟不上最新的API了。记一下开发时踩过的坑。
1. 初始化的时候不要用av_register_all()(deprecated,老代码删除此调用即可),直接open就可以了。
2. 不要用avcodec_copy_context()(deprecated),直接在原来的AVCodexContext上操作即可。如果要复制,新建一个context,并使用AVCodecParameters来转移设置。
3. 解码时,一定要用avcodec_parameters_to_context(),将流的参数(stream->codecpar)复制到解码器中,否则某些流可能无法正常解码。
4. 解码第一帧前,一定要将解码器的timebase设置为流的timebase(即:dec_ctx->pkt_timebase = stream->time_base),否则提示“Could not update timestamps for skipped samples”。
5. 新的编解码API:很多旧教程都使用avcodec_decode_audio4()和avcodec_decode_video2()(deprecated)来进行解码,但是现在建议使用新的send/receive API(文档:http://ffmpeg.org/doxygen/4.1/group__lavc__encdec.html)。新版API比旧版还方便,看看文档就会了。
6. 关于unref的使用:frame不需要unref(avcodec_receive_frame()会自动unref上一帧,不用手动调用),packet一定要unref(否则内存泄漏)。
暂时是这么多了,以后想到再写。 作者:干物猫小方 https://www.bilibili.com/read/cv2680761/ 出处:bilibili
NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.