快手 · 音视频技术入门课
刘歧
快手音视频首席架构师
4513 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 18 讲
快手 · 音视频技术入门课
15
15
1.0x
00:00/00:00
登录|注册

12 | FFmpeg基础模块(三):AVCodec

你好,我是刘歧。
前面两节课我们学习了 AVFormat、AVIO、dict 和 opt 操作接口,做容器格式封装与解封装问题不大,但是如果要涉及音视频的编解码的话,就需要用到 AVCodec 部分的接口了。
AVCodec 是存储编解码器信息的结构体,当我们使用编解码器的时候会用到 AVCodec,而 FFmpeg 除了 AVCodec 结构体之外,还有一个 AVCodecContext,是 FFmpeg 内部流程中处理编解码时,用来记录和存储上下文的结构体。关于 AVCodecContext 这个结构体的参数,如果你学习第 7 节课 FFmpeg 常用参数的时候,仔细阅读过帮助信息的话,那 AVCodecContext 这个结构体对你来说应该很好理解。

AVCodec 接口

在使用 FFmpeg 的编解码器之前,首先需要找到编解码器。
const AVCodec *avcodec_find_decoder(enum AVCodecID id);
const AVCodec *avcodec_find_decoder_by_name(const char *name);
const AVCodec *avcodec_find_encoder(enum AVCodecID id);
const AVCodec *avcodec_find_encoder_by_name(const char *name);
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了FFmpeg基础模块中的AVCodec,重点讲解了AVCodec的接口和操作。首先介绍了如何找到编码器和解码器,以及建立AVCodec与AVCodecContext的关联。然后详细讲解了编码和解码的操作接口,包括发送和接收数据的方法。接着介绍了关键参数AVPacket的构建方法,以及使用parser解析音视频编码数据的相关接口。最后提出了一个思考题,引发读者思考。整体来说,本文内容涵盖了AVCodec的基本操作和关键参数的使用,适合对音视频编解码感兴趣的读者学习参考。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《快手 · 音视频技术入门课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(4)

  • 最新
  • 精选
  • peter
    请教老师几个问题: Q1:安装后不能查看codec的parser吗? 文中有这样一句话“如果你想要知道哪些 codec 有 parser 的话,可以在编译 FFmpeg 代码那一步就通过./configure --list-parsers 来查看”。 我安装的时候没有做过和“configure --list-parsers”有关的操作,那么,现在能够查看codec的parser吗? Q2:FFmpeg能除去水印吗? FFmpeg可以给视频加上水印,那可以做相反的操作吗?即去除水印。 Q3:FFmpeg支持“变速”、“变调”吗?

    作者回复: 1. 源代码编译之前查看比较简单、否则就得自己av_parser_iterate一遍了,这样性能不太好 2. 试试delogo滤镜 3. setpts asetpts atempo asetrate都试试

    2022-08-19归属地:北京
    1
  • 长江
    解码预读大小。可以设置成0吗?这样塞进去一帧,就解码一帧,不用缓存

    作者回复: 看上去很极端,我没这么操作过😅

    2024-01-05归属地:浙江
  • 晓龙
    查看了 example/filtering_video.c 下的源码 ffmpeg 滤镜链主要用到的 结构体有:AVFilter,AVFilterInOut 接口有:avfilter_graph_create_filter,avfilter_graph_config,av_buffersrc_add_frame_flags,av_buffersink_get_frame
    2022-10-08归属地:上海
    2
  • ifelse
    学习打卡
    2023-12-30归属地:浙江
收起评论
显示
设置
留言
4
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部