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

h264编码原理

在介绍编码器原理之前首先了解三个制定编码标准的组织:
1.国际电信联盟(ITU-T),这是一个音视频领域非常强的组织,规定了很多标准如h261,h262,h263,h263++。h263++也就是h264的前身。
2.国际标准化组织(ISO),这是一个庞大的官方组织,他们规定了很多标准,如分米,温度等,在ITU-T之后,他们也开始规定编码标准。如MPEG1,MPEG2,MPEG4。
3.GOOGLE,规定了vp8,vp9等。
ITU-T和ISO竞争了多年后,两个机构开始合作,h264/(MPEG4-part10 AVC)就是他们合作的产物。

h264是一系列编码工具的组合,主要包括:
1.帧内压缩
2.帧间压缩
3.环路滤波器,实际上是一个数字低通滤波器,滤除不必要的高频信息。

帧内压缩的过程如下:
数据源–》信源编码器–》视频复合编码器–》传输缓冲编码器–》传输编码器–》h264码流

在这里插入图片描述

什么是信源编码器:
它把一张图片分割成4x4,8x8,16x16等一个个宏块,其中h264最大的宏块是16x16,至于该分割成多大的宏块,是由具体算法决定的。

什么是视频复合编码器:
把一个个宏块,进行记录,分为三部分,第一首先记录宏块的顶层一行,然后记录最左边的一行,最后记录预测。预测有9种方向,如下图。因此可以知道宏块越大,压缩比也就越高。
h265之所比h264压缩比高就是它的预测方向比较多。
在这里插入图片描述
什么是传输缓冲编码器:
信源编码器编码数据放在这里,i和p帧编码后直接出码流,不会缓存,b帧会缓存等待P帧,一个p帧进去,编码里之前缓存的b帧一定都会被刷新出来。
帧内压缩就是对宏块的压缩。丢包为什么会花屏,其实是丢了宏块,解码器解析不到就变成花屏了。

帧间压缩:
帧内压缩就是对宏块的压缩。帧间压缩分为两种,一种是没有运动的宏块,一种是运动的宏块,帧间压缩就是对运动宏块坐标的记录,称为对运动适量的记录。

h264只是规定的码流的结构,码流结构确定了,那么解码器的结构也就确定了,但是编码器的实现可以不同,只要最终编码出的码流结构符合h264就可以了。

之所以引进265是因为,264很难对1080p以上的视频编码,编码出来的视频太大。264编码算法成熟时,人们对视频清晰度还没有那么高的要求,显示器的分辨率普遍还很低。
h265之所以能提升压缩率,根本原因有是因为宏块的大小变大了,最大128x128,而264最大16x16。那么是否宏块的左边和上边加上预测方向就会忽略掉很多细节,编码就会编码的不清晰了呢。需要注意的是h265是聪明的压缩算法,比如它先划分一个64x64的宏块,划分好后发现这个宏块里的像素细节比较多,颜色变化大,那么它就会再划分四个等大小的宏块,也就是32x32,然后再对每个宏块考虑是否还需要再次细分,如果需要每个宏块再划分为4个等大的宏块,这样树形递归下去,直到划分到最小的4x4大小的宏块。这就是h265能有效压缩视频的秘密。如下图:
在这里插入图片描述但是如果只比较I帧的话,还是265稍微大一点点些,因为265采用的树形递归编码方式需要记录额外的信息。因此在I帧265并没有优势,但是它的P帧和B帧会比264的小非常多,比如P帧可能会是264P帧的1/10。
查看264视频宏块的划分可以用雷神的eyeView。
查看264视频宏块的划分可以用Elecard HEVCAnalyzer。
同时265和264还有一个更大的差别,那就是它在264的基础上增加了预测方向,使得对像素的预测更加精准。
H.265:所有尺寸的CU块,亮度有35种预测方向,色度有5种预测方向
H.264:亮度 4x4块9个方向,8x8块9个方向,16x16块4种方向,色度4种方向
在这里插入图片描述
在这里插入图片描述

265和264在码流结构也有不同,264第一帧里有两个分隔符(00 00 00 01),一个是sps,一个是pps,265则有三个分隔符,在最前面加了一个vps。vps是用来保存3D信息的,比如左眼偏光度,右眼偏光度。因此一个裸眼3D视频一定是265编码。

相关文章:

h264编码原理

在介绍编码器原理之前首先了解三个制定编码标准的组织: 1.国际电信联盟(ITU-T),这是一个音视频领域非常强的组织,规定了很多标准如h261,h262,h263,h263。h263也就是h264的前身。 2.国际标准化组织(ISO)&…...

网络工程师经常搞混的路由策略和策略路由,两者到底有啥区别?

当涉及到网络路由时,两个术语经常被混淆:策略路由和路由策略。虽然这些术语听起来很相似,但它们实际上有着不同的含义和用途。在本文中,我们将详细介绍这两个术语的区别和应用。 一、路由策略 路由策略是指一组规则,用…...

高精度气象模拟软件WRF实践技术

【原文链接】:高精度气象模拟软件WRF(Weather Research Forecasting)实践技术及案例应用https://mp.weixin.qq.com/s?__bizMzU5NTkyMzcxNw&mid2247538149&idx3&sn3890c3b29f34bcb07678a9dd4b9947b2&chksmfe68938fc91f1a99bbced2113b09cad822711e7f…...

总结827

学习目标: 4月(复习完高数18讲内容,背诵21篇短文,熟词僻义300词基础词) 学习内容: 高等数学:刷1800,做了26道计算题,记录两道错题,搞懂了,但并不…...

还在发愁项目去哪找?软件测试企业级Web自动化测试实战项目

今天给大家分享一个简单易操作的实战项目(已开源) 项目名称 ET开源商场系统 项目描述 ETshop是一个电子商务B2C电商平台系统,功能强大,安全便捷。适合企业及个人快速构建个性化网上商城。 包含PCIOS客户端Adroid客户端微商城…...

总结下Spring boot异步执行逻辑的几种方式

文章目录 概念实现方式Thread说明 Async注解说明 线程池CompletableFuture(Future及FutureTask)创建CompletableFuture异步执行 消息队列 概念 异步执行模式:是指语句在异步执行模式下,各语句执行结束的顺序与语句执行开始的顺序…...

【开发日志】2023.04 ZENO----Composite----CompNormalMap

NormalMap-Online (cpetry.github.io)https://cpetry.github.io/NormalMap-Online/ CompNormalMap 将灰度图像转换为法线贴图 将灰度图像转换为法线贴图是一种常见的技术,用于在实时图形渲染中增加表面细节。下面是一个简单的方法来将灰度图像转换为法线贴图&…...

春秋云境:CVE-2022-28525 (文件上传漏洞)

目录 一、题目 1.登录 2.burp抓包改包 3.蚁剑获取flag 一、题目 ED01CMSv20180505存在任意文件上传漏洞 英语不够 翻译来凑: 点击其他页面会Not Found 找不到: 先登录看看吧: 试试万能密码:admin:123 发现错误…...

【软件测试二】开发模型和测试模型,BUG概念篇

目录 1.软件的生命周期 2.瀑布模型 3.螺旋模型 4.增量,迭代 5.敏捷---scrum 1. 敏捷宣言 2.角色 6. 软件测试v模型 7.软件测试w模型 8.软件测试的生命周期 9.如何描述一个BUG 10.如何定义BUG的级别 11.BUG的生命周期 12.产生争执怎么办 1.软件的生命周期…...

短视频app开发:如何实现视频直播功能

短视频源码的实现 在短视频app开发中,实现视频直播功能需要借助短视频源码。短视频源码可以提供一个完整的视频直播功能模块,包括视频采集、编码、推流等。因此,我们可以选择一些开源的短视频源码,例如LFLiveKit、ijkplayer等&am…...

[架构之路-174]-《软考-系统分析师》-5-数据库系统-7-数据仓库技术与数据挖掘技术

5 . 7 数据仓库技术 数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。近年来,人们对数据仓库技术的关注程度越来越尚,其原因是过去的几十年中,建设了无数的应用系统,积累了…...

销售高品质 FKM EPDM NBR 硅胶 O 形密封圈

O形圈常用于各种行业,包括汽车、航空航天和制造业。它们是由不同材料制成的圆环,用于将两个或多个组件密封在一起。用于制造O形圈的材料是决定其有效性和耐用性的重要因素。在本文中,我们将讨论用于制作O形圈的不同类型的材料。 1.丁腈橡胶(…...

Linux环境变量:不可或缺的系统组成部分

目录标题 引言(Introduction)Linux环境变量的概念(Concept of Linux Environment Variables)环境变量的作用与重要性(Roles and Importance of Environment Variables) Linux环境变量基础(Linux…...

FFmpeg命令行解析

目录标题 一、引言(Introduction)1.1 FFmpeg简介(Overview of FFmpeg)1.2 FFmpeg命令行的应用场景(Application Scenarios of FFmpeg Command Line) 二、FFmpeg命令行基础(FFmpeg Command Line …...

机器学习——为什么逻辑斯特回归(logistic regression)是线性模型

问:逻辑斯蒂回归是一种典型的线性回归模型。 答:正确。逻辑斯蒂回归是一种典型的线性回归模型。它通过将线性回归模型的输出结果映射到[0,1]区间内,表示某个事物发生的概率,从而适用于二分类问题。具体地说,它使用sig…...

从输入URL到页面展示到底发生了什么

刚开始写这篇文章还是挺纠结的,因为网上搜索“从输入url到页面展示到底发生了什么”,你可以搜到一大堆的资料。而且面试这道题基本是必考题,二月份面试的时候,虽然知道这个过程发生了什么,不过当面试官一步步追问下去的…...

Qt connect传参方式及lambda函数传参方式详解

Qt connect传参方式及lambda函数传参方式详解 Qt是一种流行的跨平台C应用程序框架,它提供了许多有用的工具和函数来帮助开发人员构建高效的图形用户界面和其他应用程序。其中,Qt Connect函数是用于连接信号和槽的重要函数之一,它可以在Qt应用…...

如何在硬盘上恢复已经删除的照片?

可以从硬盘恢复删除的照片吗? 旅行后,许多人倾向于将照片保存到另一个储存设备作为副本或备份。例如,将它们存储在外部硬盘上或将图片传输到电脑。但是在整理照片的时候,很可能不小心把照片删掉了,尤其是使用外接硬…...

Unity日记22(携程概念)

目录 学习视频 携程 1异步 2调用方法 3优点 4停止方法 5返回值 实例:每过一秒打印当前运行时间 实例:停止数字打印携程 错误方法:(携程只能开一个) 参考方法 学习视频 https://www.bilibili.com/video/BV1eu…...

01-Linux-磁盘分区与目录配置

1. 主引导纪录和磁盘分区表 1.1 MBR分区表 启动引导程序记录区与分区表都放在磁盘的第一个扇区(512B) 由于分区表仅占 64B,因此最多能有四组记录区,每组记录区记录了该区段的起始与结束的柱面号码。 缺点如下: 操作…...

fre:ac音频转换全攻略:跨平台高效工作流搭建指南

fre:ac音频转换全攻略:跨平台高效工作流搭建指南 【免费下载链接】freac The fre:ac audio converter project 项目地址: https://gitcode.com/gh_mirrors/fr/freac 在数字音频处理领域,开源工具的选择往往决定了工作流的效率与质量。fre:ac作为一…...

AsyncAPI消息模式匹配:基于内容路由消息的终极指南

AsyncAPI消息模式匹配:基于内容路由消息的终极指南 【免费下载链接】spec The AsyncAPI specification allows you to create machine-readable definitions of your asynchronous APIs. 项目地址: https://gitcode.com/gh_mirrors/spec/spec AsyncAPI规范允…...

STORM:基于检索与多视角提问的智能知识策展系统架构解析

STORM:基于检索与多视角提问的智能知识策展系统架构解析 【免费下载链接】storm An LLM-powered knowledge curation system that researches a topic and generates a full-length report with citations. 项目地址: https://gitcode.com/GitHub_Trending/sto/st…...

别再傻傻用远程桌面了!手把手教你用华为服务器自带的KVM工具(附初始IP和密码)

华为服务器KVM工具实战指南:解锁高效运维新姿势 第一次接触华为服务器时,我和大多数运维新手一样,本能地打开远程桌面连接工具,输入IP地址准备登录。直到某次机房网络故障,我才发现华为早已在服务器中内置了一把"…...

和芯星通车规级GNSS模块UM670A:双频定位技术如何赋能智能驾驶

1. 双频定位技术如何让汽车"看得更准" 开车时最怕什么?导航突然漂移算一个。明明在高架上,地图却显示你在旁边小区里转悠——这种尴尬很多车主都遇到过。问题的根源往往在于传统单频定位的精度不足。和芯星通UM670A模块采用的双频定位技术&…...

TypeScript——tsconfig.json

tsconfig.json1、使用配置文件1.1、自动搜索配置文件1.2、指定配置文件2、编译选项列表3、编译文件列表3.1、--listFiles编译选项3.2、 默认编译文件列表3.3、files属性3.4、include属性3.5、 exclude属性4、声明文件列表4.1、--typeRoots编译选项4.2、--types编译选项5、继承…...

告别地图切换卡顿:优化OpenLayers加载天地图瓦片的性能与体验指南

告别地图切换卡顿:优化OpenLayers加载天地图瓦片的性能与体验指南 在WebGIS项目开发中,地图加载速度和操作流畅度直接影响用户体验。当项目上线后,用户反馈地图切换卡顿、加载缓慢时,开发者往往需要深入底层优化才能解决问题。本文…...

PyTorch训练二分类模型时,你的损失函数为什么突然变成NaN了?排查BCELoss的5个坑

PyTorch训练二分类模型时,你的损失函数为什么突然变成NaN了?排查BCELoss的5个坑 深夜的调试台前,咖啡杯早已见底,屏幕上那个刺眼的"nan"却依然顽固地停留在损失值的位置。这不是第一次,也不会是最后一次——…...

颠覆式开源工具OptiScaler:全平台显卡优化解决方案

颠覆式开源工具OptiScaler:全平台显卡优化解决方案 【免费下载链接】OptiScaler DLSS replacement for AMD/Intel/Nvidia cards with multiple upscalers (XeSS/FSR2/DLSS) 项目地址: https://gitcode.com/GitHub_Trending/op/OptiScaler 你的显卡真的被充分…...

gobang高级配置指南:如何自定义主题和键位绑定

gobang高级配置指南:如何自定义主题和键位绑定 【免费下载链接】gobang A cross-platform TUI database management tool written in Rust 项目地址: https://gitcode.com/gh_mirrors/go/gobang gobang是一款跨平台的TUI数据库管理工具,采用Rust编…...