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

Qt+FFmpeg+opengl从零制作视频播放器-15.音视频一些知识

1.视频方面

本专栏只针对视频压缩数据为H.264的数据进行演示。

H264解码后的原始数据主要包括片(slice)、宏块(MB)以及YUV像素数据

  • 片是H264编码中的基本单元,它包含一帧图像的部分或全部数据。一个视频帧可以由一个或多个片组成,每个片最少包含一个宏块,最多可以包含整帧图像的数据。片的设计目的是为了限制误码的扩散和传输,确保编码片之间的独立性。
  • 宏块是H264编码的核心单位,由16x16的YUV数据组成。H264利用帧内压缩和帧间压缩的方式来提高编码压缩率,其中帧内压缩类似于静态图像压缩,而帧间压缩则涉及到帧与帧之间的关系。
  • YUV像素数据是解码后得到的直接可用于显示或进一步处理的图像数据。

原始视频数据会被压缩成I帧、P帧和B帧三种不同类型的视频帧。I帧是关键帧,包含完整的画面信息,而P帧和B帧则分别参考前后的I帧或P帧,记录与前后帧的差异信息。

DTS:解码的时间戳。

PTS:显示的时间戳。

对于音频来说,DTS和PTS是相同的;

对于视频来说,考虑到 I帧、B帧、P帧,所以一般不同。

GOP:两个I帧之间的一组图片,由一个I帧和多个B/P帧组成,是编解码器存取的基本单位。

  • 闭合式GOP:闭合式GOP只需要参考本GOP内的图像即可,不需参考前后GOP的数据。这种模式决定了,闭合式GOP的显示顺序总是以I帧开始以P帧结束
  • 开放式GOP:开放式GOP中的B帧解码时可能要用到其前一个GOP或后一个GO

相关文章:

  • 鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Toggle)
  • VS 调试Hololens 2工程报错 有未经处理的异常: Microsoft C++ 异常:
  • 2115. 从给定原材料中找到所有可以做出的菜
  • 垃圾回收器介绍
  • FDU 2020 | 1. 食堂打饭
  • 基于SpringBoot的“智慧食堂”系统(源码+数据库+文档+PPT)
  • 突破编程_C++_设计模式(状态模式)
  • C语言分析基础排序算法——计数排序
  • 网络建设与运维培训介绍和能力介绍
  • Linux--搭建Zabbix监控系统
  • Vue3:ref和reactive实现响应式数据
  • Java中常用的集合及方法(2)
  • Day36:安全开发-JavaEE应用第三方组件Log4j日志FastJson序列化JNDI注入
  • Java学习笔记NO.18
  • 去除PDF论文行号的完美解决方案
  • hexo+github搭建个人博客
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • canvas 绘制双线技巧
  • JavaScript服务器推送技术之 WebSocket
  • LeetCode29.两数相除 JavaScript
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • Node + FFmpeg 实现Canvas动画导出视频
  • QQ浏览器x5内核的兼容性问题
  • SAP云平台里Global Account和Sub Account的关系
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 包装类对象
  • 第十八天-企业应用架构模式-基本模式
  • 给github项目添加CI badge
  • 后端_ThinkPHP5
  • 经典排序算法及其 Java 实现
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 思否第一天
  • 我有几个粽子,和一个故事
  • 阿里云服务器购买完整流程
  • 关于Android全面屏虚拟导航栏的适配总结
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ###C语言程序设计-----C语言学习(6)#
  • #100天计划# 2013年9月29日
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (pojstep1.1.2)2654(直叙式模拟)
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (万字长文)Spring的核心知识尽揽其中
  • (一)插入排序
  • (转)项目管理杂谈-我所期望的新人
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .Net IOC框架入门之一 Unity
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .NET/C# 使用反射注册事件
  • .NetCore项目nginx发布
  • @Bean有哪些属性
  • @GlobalLock注解作用与原理解析