当前位置: 首页 > news >正文

FFmpeg解码流程核心要点

目录

一、4 个核心结构体(谁是干啥的)

二、解码初始化固定顺序(模板)

三、解码循环固定写法(必须会抄)

四、裸流专用(非 mp4 才需要)


一、4 个核心结构体(谁是干啥的)

  • AVCodec
    解码器“类型说明书”,描述支持什么格式、名字等。

  • AVCodecContext
    解码器“这一次工作的大脑和状态”,本次解码的所有参数/缓冲都挂在这里。

  • AVPacket
    一包压缩数据(送进解码器的东西)。

  • AVFrame
    一帧解码后的原始数据(从解码器拿出来的东西)。


二、解码初始化固定顺序(模板)

  1. avcodec_find_decoder()
    找到对应格式的解码器(得到 AVCodec)。

  2. avcodec_alloc_context3()
    创建解码上下文(AVCodecContext)。

  3. avcodec_open2()
    打开解码器,完成初始化。

  4. av_frame_alloc()
    分配一个 AVFrame,用于接收解码输出。

  5. av_packet_alloc()
    分配一个 AVPacket,用于装每次要送进去的压缩数据包。


三、解码循环固定写法(必须会抄)

  • 正常解码每个包:

    avcodec_send_packet(ctx, pkt);
    while (avcodec_receive_frame(ctx, frame) >= 0) {// 使用这一帧 frame
    }
    
  • 结尾 flush:

    avcodec_send_packet(ctx, NULL);   // 送 NULL 包
    while (avcodec_receive_frame(ctx, frame) >= 0) {// 处理最后冲出来的帧
    }
    

四、裸流专用(非 mp4 才需要)

  • 结构体:AVCodecParserContext
    作用:从连续字节流中 按帧切出 AVPacket

  • 函数:av_parser_parse2()
    作用:

    • 输入:一段字节数据

    • 输出:可能产生一个完整的 pkt->data + pkt->size

    • 没有完整包就继续喂,下次接着解析。

容器格式(mp4/mkv)一般用 av_read_frame,不需要 parser;
裸流(ES)才需要 AVCodecParserContext + av_parser_parse2

http://www.dtcms.com/a/619154.html

相关文章:

  • Numpy在OpenCV中的应用
  • 网站备案类型wordpress文档编辑
  • 网站建设的维护范围合肥网站建设yjhlw
  • 100个实用小工具第3——股票分析系统
  • 有哪些做家教网站网站设计平台 动易
  • 做网站0基础写代码原神网页设计素材
  • 摄影展板设计东莞网站建设seo推广
  • opencv代码分析
  • 素材网站的下载服务器怎么做wordpress数据库改域名
  • 网站运营招聘要求软件项目管理计划书
  • 江西南昌建设厅网站怎么做qq代刷网站
  • 主从DNS服务器
  • 邢台做网站哪家公司好上海缪斯设计公司官网
  • 做外贸做的很好的网站属于网络营销的特点是
  • 响应式网站有什么好处策划公司活动方案
  • 怎么做网站滑动图片部分wordpress 调试
  • 第42节:自定义渲染管线:修改Three.js默认流程
  • 网站开发后端最新技术设计公司注册需要什么条件
  • AdalFlow:让大模型任务像水流一样灵活可塑
  • 网奇e游通旅游网站建设系统如何修改上传到服务器小视频做网站怎么赚钱吗
  • 达州达县网站建设网站设计与平面设计区别
  • 西安市建设网站西安模板做网站
  • 移动开发工程笔记:glide/taro与性能优化
  • nuxt做多页面网站本地wordpress环境搭建
  • Flink原理与实战(java版)#第2章 Flink的入门(第七节Flink的第一个流式计算示例和第八节本章小结)
  • 普通的宣传网站用什么做百度应用商店官网
  • SpringBoot 整合时序数据库 Apache IoTDB 实战操作详解
  • Painter AI 散布:告别“重复感”的环境贴图
  • 长沙米拓建站wordpress apache 配置
  • 安卓手机做网站服务器吗建站系统源代码