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

H264编码

        H264是一种针对视频的压缩编码方式。

一、压缩方法

        H264主要基于以下几种方法,将数据进行压缩:

1.帧内预测压缩:解决空间域数据冗余的问题

2.帧间预测压缩:(运动估计与补偿)解决时间域数据冗余的问题

3.整数离散余弦变换(DCT):将空间上的相关性转换为频域上的无关性,然后量化

二、压缩后数据

        压缩后,H264文件由I帧B帧P帧GOP图像序列组成。

I帧关键帧,由帧内压缩得到

B帧双向预测帧,由帧间压缩得到,压缩时既考虑前面的帧,又考虑后边的帧

P帧前向预测帧,由帧间压缩得到,压缩时只考虑前面处理的帧

GOP图像序列:由一个关键帧(I 帧)和后续的若干预测帧(P 帧B 帧)组成

三、H264组成

        H264由网络提取层 + 视讯编码层这两层组成。

1.网络提取层(NAL):网络编码后产生的数据流。通过NAL的第一个字节可以判断帧的类型

2.视讯编码层(VCL):是一个过程的汇总,由数据通过压缩编码得到NAL的过程,称为VCL

四、码流结构

        视频数据序列被压缩后形成VCL数据,VCL数据要封装在NAL单元中才可以传输。

SPS:序列参数集,作用于一系列连续的编码图像

PSS:图像参数集,作用于编码视频序列中一个或多个独立图像

         上图中的NALU可以分为两种:VCL类型 和 非VCL类型

五、IDR帧

        IDR帧,一种特殊的I帧

一般由于B和P帧都需要参考前后帧进行压缩,因此缓冲区中总保存着前后帧的信息。当解码器接收到当前是IDR帧时,会清空当前缓冲区,找到第一个IDR帧,并重新解码。

        每一个GOP的第一个帧就是IDR帧。(当图像差异过大时,会出现IDR帧)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 深度学习速通系列:贝叶思和SVM
  • 通过自定义注解、反射和AOP在Spring Boot中动态修改请求参数
  • Android运行时权限详解
  • 低通滤波器
  • Hive/Spark小文件解决方案(企业级实战)–参数和SQL优化
  • Redis在Spring Boot中的应用详细讲解和案例示范
  • C语言实现经典排序算法
  • Go语言的前世今生与未来展望
  • 解析 Agent 在国外智慧金融领域的一个落地场景:智能顾投
  • Burp Suite Professional 2024.8 for macOS x64 ARM64 - 领先的 Web 渗透测试软件
  • java.lang.NoSuchMethodException:方法不存在异常。当访问某个类的不存在的方法时抛出该异常
  • 读取xml的内容并显示在textEdit中,导出xml文件
  • 程序设计—基于网络爬虫的股票价格分析系统 项目源码27486
  • axios发送post请求实例
  • Python基本语法知识点
  • Android优雅地处理按钮重复点击
  • CSS相对定位
  • iOS 颜色设置看我就够了
  • java8-模拟hadoop
  • Java程序员幽默爆笑锦集
  • Laravel 中的一个后期静态绑定
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Odoo domain写法及运用
  • React 快速上手 - 07 前端路由 react-router
  • SQL 难点解决:记录的引用
  • webpack+react项目初体验——记录我的webpack环境配置
  • Xmanager 远程桌面 CentOS 7
  • 类orAPI - 收藏集 - 掘金
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 排序算法学习笔记
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 如何在GitHub上创建个人博客
  • 十年未变!安全,谁之责?(下)
  • 使用 @font-face
  • 栈实现走出迷宫(C++)
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • zabbix3.2监控linux磁盘IO
  • ​queue --- 一个同步的队列类​
  • # 数据结构
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • $ git push -u origin master 推送到远程库出错
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (PySpark)RDD实验实战——取最大数出现的次数
  • (八)Flask之app.route装饰器函数的参数
  • (笔试题)分解质因式
  • (二)springcloud实战之config配置中心
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (九十四)函数和二维数组
  • (十二)Flink Table API
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (转载)从 Java 代码到 Java 堆
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .net core docker部署教程和细节问题