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

FFMPEG 解码流程 硬解码

关键流程概述

  1. 初始化阶段‌
    • av_register_all():注册所有编解码器 新版本可以不调用了
    • avformat_network_init(): 网络初始化
    • avformat_alloc_context():创建封装格式上下文
    • avformat_open_input():打开媒体文件
  1. 流信息解析‌
    • avformat_find_stream_info():获取流信息
    • av_find_best_stream():查找视频和音频流索引
  1. 解码器创建‌

软解方案

    • avcodec_find_decoder():查找解码器
    • avcodec_alloc_context3():创建解码器上下文
    • avcodec_parameters_to_context()
    • avcodec_open2():打开解码器

硬解方案

    • avcodec_find_decoder_by_name 查找对应的硬解码器
    • .....
    • avcodec_open2():打开解码器
  1. 解码循环‌
    • av_read_frame():读取压缩数据包 Avpacket -> queue
    • avcodec_send_packet():发送到解码器
    • avcodec_receive_frame():接收解码帧 AvFrame yuv / pcm
  1. 视频渲染以及音频播放
    1. YUV sws_scale():统一像素格式转换(YUV420)
    2. PCM 播放  

有想学习音视频的兄弟 更多详情可以查看视频  哔哩哔哩_bilibili

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

相关文章:

  • 从零构建实时通信引擎:Freeswitch源码编译与深度优化指南
  • netty的编解码器,以及内置的编解码器
  • Linux系统权限全面解析:掌握你的数字王国钥匙
  • Python 链接各种中间件[Mysql\redis\mssql\tdengine]
  • 数据结构01:链表
  • FashionAI / 智尚衣橱 / TryFit / 智能时尚搭配平台
  • 面试150 N皇后Ⅱ
  • Docker环境搭建RabbitMq集群详解
  • 【CAN】2.帧格式
  • ReasonFlux:基于思维模板与分层强化学习的高效推理新范式
  • Python接口自动化实战 ( 第一阶段) - 封装接口请求类和异常处理
  • Ubuntu 虚拟机配置 与Windows互传文件
  • react19相关问题和解答
  • 【技术新闻】OpenAI发布GPT-5,AI编程助手迎来革命性突破
  • React集成百度【BMap Draw】教程(001):实现距离测量和面积测量
  • dubbo源码分析之请求调用异步化原理
  • Pandas核心数据结构详解
  • 第3章通用的服务可用性治理手段——3.2 重试
  • Kotlin 作用域函数 let 的实现原理
  • 大疆视觉算法面试30问全景精解
  • 基于Java+MySQL实现(Web)文件共享管理系统(仿照百度文库)
  • Java自动拆箱机制
  • 云祺容灾备份系统阿里云对象存储备份与恢复实操手册
  • List<UserInfo> list = new ArrayList<>();为什么要这样创建数组?
  • 智能文本抽取在法院卷宗管理应用剖析
  • 力扣-139.单词拆分
  • Qt 网络编程如何采用Http进行通信
  • 碳化硅缺陷分类与原因
  • C++的lambda表达式原理
  • 【RK3576】【Android14】MIC开发调试