H.265与H.264的差异详解

从H.264/H.265码流手动解析SPS:获取视频宽高与帧率的底层原理与实践 在音视频开发与流媒体处理中,获取视频的基础参数如分辨率与帧率是首要任务。视频编码标准(如H.264/H.265)通过序列参数集(SPS)来承载这些核心元数据。SPS采用指数哥伦布编码等压缩格式,嵌入在NALU码流结构中。理解并手动解析SPS的技术价值在于,它能实现极致的性能优化、处理不完整码流,并深化对编码规范的理解,是开发轻量级播放器、高性能分析工具或嵌入式系统的关键技能。本文聚焦于从H.264/H.265的原始比特流中,逐步解析SPS语法元素,精确计算视频的宽、高及帧率,并提供了核心的代码示例与避坑指南 阅读详情

目录:

1.编解码框架差异

2.压缩性能比较

3.各模块技术差异汇总

4.块划分结构

5.帧内预测

6.帧间预测

7.去块滤波

8.SAO滤波

9.Tile

10.WPP

11.Dependent slice

12.其他技术

 

1.    H.264与H.265的主要差异

H.265仍然采用混合编解码,编解码结构域H.264基本一致,

主要的不同在于:

Ø  编码块划分结构:采用CU (CodingUnit)、PU(PredictionUnit)和TU(TransformUnit)的递归结构。

Ø  基本细节:各功能块的内部细节有很多差异

Ø  并行工具:增加了Tile以及WPP等并行工具集以提高编码速度

Ø  滤波器:在去块滤波之后增加了SAO(sample adaptive offset)滤波模块


Fig.H.265的框架图

 

2.    压缩性能比较

PSNR计算方式


H.265/HEVC HM-9.0 和H.264  JM-18.4 的BD-rate 比较:

 AllIntra case:                     22%

 RandomAccess case:              34%

 LowDelay case:                   37%

 

3.    各模块技术差异汇总

 

4.    块划分结构

在H.265中,将宏块的大小从H.264的16×16扩展到了64×64,以便于高分辨率视频的压缩。

同时,采用了更加灵活的编码结构来提高编码效率,

包括编码单元(CodingUnit)、预测单元(PredictUnit)和变换单元(TransformUnit)。

如下图所示:


其中:

编码单元类似于H.264/AVC中的宏块的概念,用于编码的过程。

预测单元是进行预测的基本单元,

变换单元是进行变换和量化的基本单元。

 

这三个单元的分离,使得变换、预测和编码各个处理环节更加灵活,

也有利于各环节的划分更加符合视频图像的纹理特征,

有利于各个单元更优化的完成各自的功能。

 

 

RQT是一种自适应的变换技术,这种思想是对H.264/AVC中ABT(AdaptiveBlock-size Transform)技术的延伸和扩展。

对于帧间编码来说,它允许变换块的大小根据运动补偿块的大小进行自适应的调整;

对于帧内编码来说,它允许变换块的大小根据帧内预测残差的特性进行自适应的调整。

大块的变换相对于小块的变换,一方面能够提供更好的能量集中效果,并能在量化后保存更多的图像细节,但是另一方面在量化后却会带来更多的振铃效应。

因此,根据当前块信号的特性,自适应的选择变换块大小,如下图所示,可以得到能量集中、细节保留程度以及图像的振铃效应三者最优的折中。


Fig. 灵活的块结构示意图

 

 

5.    帧内预测模式

本质上H.265是在H.264的预测方向基础上增加了更多的预测方向

H.265:所有尺寸的CU块,亮度有35种预测方向,色度有5种预测方向

H.264:亮度 4x4块9个方向,8x8块9个方向,16x16块4种方向,色度4种方向

 

H.264的帧内预测方向:

 

H.265的帧内预测方向:

 

6.    帧间预测

本质上H.265是在H.264基础上增加插值的抽头系数个数,改变抽头系数值以及增加运动矢量预测值的候选个数,以达到减少预测残差的目的。

H.265与H.264一样插值精度都是亮度到1/4,色度到1/8精度,但插值滤波器抽头长度和系数不同.

H.265的增加了运动矢量预测值候选的个数,而H.264预测值只有一个

 

H.265的空域候选项:

H.265时域共同位置候选项

 

7.    去块滤波

本质上H.265的去块滤波与H.264的去块滤波及流程是一致的,做了如下最显著的改变:

Ø  滤波边界: H.264最小到4x4边界滤波;而H.265适应最新的CU、PU和TU划分结构的滤波边缘,最小滤波边界为8x8,

Ø  滤波顺序:H264先宏块内采用垂直边界,再当前宏块内水平边界;而H.265先整帧的垂直边界,再整帧的水平边界

 

ALF在编解码环路内,位于Deblock和SAO之后,

用于恢复重建图像以达到重建图像与原始图像之间的均方差(MSE)最小。

ALF的系数是在帧级计算和传输的,可以整帧应用ALF,

也可以对于基于块或基于量化树(quadtree)的部分区域进行ALF,

如果是基于部分区域的ALF,还必须传递指示区域信息的附加信息。

 

8.   采样点自适应偏移(Sample AdaptiveOffset)滤波

SAO(sample adaptive offset)滤波其实就是对去块滤波后的重建像素按照不同的模板进行分类,并对每一种分类像素进行补偿, 分类模板分为BO(Band offset)和EO(Edge offset)。

 

BO分类:

 

EO分类模块:

SAO在编解码环路内,位于Deblock之后,通过对重建图像的分类,对每一类图像像素值加减一个偏移,达到减少失真的目的,从而提高压缩率,减少码流。

采用SAO后,平均可以减少2%~6%的码流,而编码器和解码器的性能消耗仅仅增加了约2%。

 

9.   Tile

Tile:  将图像分割为矩形区域。

其主要目的是增强并行处理性能。

每个tile区域相当于一幅子图像,可独立的以LCU块为单位进行编解码。

一个Tile块为基本的并行单元,每个Tile为一个子码流

 

10.  WPP

WPP:   全称为wavefront  parallel process,以LCU行为基本的编码单位。

以一行LCU块为基本的并行单元,每一行LCU为一个子码流

 

11.  Dependentslice

Dependent slice:该技术可以理解为对原先Slice NALU的数据划分,使其可以适合更加灵活的打包方式。

Slice 和dependent slice 的示意图如下


12.  其他相关技术

Ø  Transform_skip模式:transform_skip_flag,该模式不进行变换,但是要进行量化,该模式对文本桌面视频有较好效果

Ø  内部比特深度增加:为了保证中间预测、变换以及量化过程中的内部比特精度,以达到更好的压缩性能

深入学习H264和H265 在开始学习H264/H265之前,我们要先了解一些和视频相关的专业名词Level(级别)指定视频编码的最大能力,如最大分辨率、最大帧率等。NAL Unit(网络抽象层单元)视频编码流中的最小可访问单元,用于传输和解码。Slice(片)视频帧的一部分,可以独立解码,用于错误恢复和并行处理。Macroblock(宏块)编码的基本单元,通常为16x16像素的块,用于运动估计和预测。Intra Frame(I帧)不依赖其他帧进行解码的帧,通常用于随机访问点。 阅读详情

相关推荐

音视频入门:H264、H265概念总结

添加链接描述 什么是H.264与H.265 H.264与H.265都是视频压缩格式,由于视频本身的码流太大,所以需要经过压缩然后再通过网络进行传输。H.264是目前比较主流的压缩算法,像视频会议设备一般都采用这个编码格式。基础的H.264可以支持在1M带宽下传输720P30帧/秒的图像;H.264 HIGH PROFILE支持在512K带宽下传输720P30帧/秒的图像。 H.265是比较新的压缩算法,可以更一步提高压缩比,随着我们现在生活中出现的视频格式越来越大(比如现在基本都是1080P甚至4K的显示器

weixin_40673765的博客 8936

浅谈h264和h265的区别

h265编码出来的NALU码流的分隔,和h264一样,也是使用00 00 00 01 start code,而且防竞争机制(emulation)也一样。通常编码器出来的码流都是做过防竞争处理的,在传输或保存NALU时无论是使用start code前缀还是长度前缀,都不需要做去03处理,解码器解码的时候会做这一步操作,当然如果要分析NALU码流,就需要先做去03处理。相比h264,压缩同样的视频获得同样的质量的情况下,h265可以做到压缩后的大小为前者的一半,但压缩时间复杂度增加。

格物致知的专栏 [音视频编解码 网络协议 计算机视觉 计算机图形学 图像理解 语音识别 机器学习 模拟电路 传感器] 1万+

文档07-H264与H265的区别于差异,被阿里面试官征服了

学完之后,若是想验收效果如何,其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份xmind文件的知识梳理大纲脑图,这样也可方便后续的复习,且都是自己的理解,相信随便瞟几眼就能迅速过完整个知识,脑补回来。下方即为我手绘的Android框架体系架构知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的Android框架体系架构知识脑图原件(包括上方的面试解析xmind文档)

1488

H.264 vs H.265:哪个视频编解码器更好?

视频编解码器是压缩和解压数字视频数据的软件或硬件。它们使用算法来减少视频文件的大小,使其更容易存储或在互联网上传输。通过压缩视频数据,这些编解码器可以实现更快的流媒体和更流畅的播放。编解码器还通过使用将视频压缩和解压时发生的失真最小化的算法来保持视频的质量。如果没有编解码器,视频将过于庞大,无法在没有长时间延迟和质量差的情况下进行流媒体或下载。视频编解码器有几种类型,但其中最常见的两种是 H.264 和 H.265。这两种编解码器已成为行业标准,被许多视频流媒体服务、视频编辑应用程序和网络浏览器所采用。

winkexin的博客 5937

FFmpeg转码实战:如何用CRF参数在H.264和H.265中平衡画质与体积

本文深入解析FFmpeg视频转码中CRF参数的核心作用,指导如何在H.264和H.265编码下有效平衡视频画质与文件体积。通过对比不同CRF值的视觉差异与文件大小,并结合预设参数,为短视频、在线教育及影视存档等实战场景提供了具体的参数设置建议与优化命令,帮助用户实现高效的视频压缩与画质控制。

t4y5u6i7o的博客 882

告别HEVC兼容性烦恼:一份给开发者的视频编码格式选择与转换指南(H.264 vs H.265)

本文深入解析H.264与H.265(HEVC)视频编码格式的技术差异与工程实践,帮助开发者解决HEVC兼容性问题。通过对比解码特性、硬件支持及编码效率,提供决策树与FFmpeg工业级转码方案,实现视频处理架构的优化与性能平衡。

weixin_26801149的博客 281

从十六进制编辑器到代码:我是如何读懂H.264和H.265码流结构的

本文详细解析了如何通过十六进制编辑器直接解读H.264和H.265码流结构,从二进制层面揭示视频编码的原始秘密。通过分析NALU单元的三要素(Start Code、NALU Header、NALU Payload),并结合实战代码示例,帮助开发者深入理解码流处理技术,提升视频编解码效率。

weixin_28731223的博客 185

嵌入式H.265录像:libmp4v2封装MP4实践指南

视频编码与封装是录像方案的两大核心,H.265凭借更高的压缩效率成为高清视频的主流编码标准,但编码器输出的裸流必须封装为播放器可识别的容器格式,MP4则是最广泛使用的封装格式之一。在嵌入式Linux或RTOS等资源受限环境下,完整的FFmpeg往往体积过大,而libmp4v2作为轻量级MP4封装库,仅需几百KB即可实现H.265码流的MP4录制。与H.264相比,H.265封装引入了VPS参数集和不同的NAL头结构,封装时需要正确配置hvcC盒子并处理时间戳与关键帧标志。通过掌握MP4Create、MP4A

weixin_34006965的博客 465

Android Camera + MediaCodec编码实战:从YUV到H.264/H.265,如何正确提取VPS/SPS/PPS参数?

本文深入探讨了Android Camera与MediaCodec编码实战,重点解析了从YUV到H.264/H.265编码过程中VPS/SPS/PPS参数的提取方法。通过对比H.264与H.265参数集差异,详细介绍了编码器配置、色彩格式选择策略以及参数集提取的两种核心方法,帮助开发者解决视频流处理中的关键问题,提升编码效率与兼容性。

weixin_30621711的博客 455

海康威视H.265 NVR SDK二次开发:从黑屏到流畅预览的实战指南

视频监控二次开发中,H.265(HEVC)编码凭借更高的压缩率逐渐成为NVR主流,但相比H.264,其码流结构与解码链路更复杂,开发者也更容易遇到黑屏、花屏或CPU占用过高等问题。本文从音视频编解码基础讲起,梳理H.265 NVR SDK与旧版SDK的差异,重点分析实时预览与录像回放中的关键技术点,包括私有码流解析、SPS/PPS参数集处理、解码器选型与线程模型设计。同时结合实际工程经验,给出SDK初始化、登录、动态库配置以及多路并发下的性能优化建议,并介绍Python/PyQt5快速调试与跨语言封装的落地

weixin_32770423的博客 349

Linux Qt接安防SDK:ffmpeg解码H.264/H.265视频显示实践

实时视频监控系统常需接入多路摄像头,直接使用RTSP拉流虽能快速出图,但会丢失设备私有能力,难以满足报警回调、云台控制等长稳运行需求。厂商SDK负责设备鉴权、通道管理和码流回调,ffmpeg则承担裸流解码与YUV到RGB像素转换,最终通过QImage在Qt界面呈现。在Linux环境下,开发者需关注SDK取流回调线程、解码队列缓冲、关键帧同步及掉线重连等工程边界,避免丢帧、花屏和内存崩溃。以H.264/H.265裸流解码为例,介绍SDK接入、解码线程设计及避坑经验,帮助开发者高效搭建多路安防视频巡检应用,兼顾

weixin_29189363的博客 233

如何通过萤石 H.265 能力集成实现视频传输优化?

H.265与H.264视频编码技术解析及萤石平台应用指南 本文系统介绍了H.265与H.264视频编码标准的技术特性与差异。H.264作为主流编码格式占据80%市场份额,而H.265在相同画质下可节省39-44%带宽,但需要更强的编解码性能。萤石开放平台全面支持H.265能力,提供多种集成方案:1)通过EZOPEN私有协议集成SDK实现原生支持;2)标准流支持包括RTMP、HLS、Http-flv等协议,需注意参数配置;3)提供专属FLV播放器和HLS播放器解决方案;4)ERTC实时通信协议支持部分设备H.

hq123897的博客 514

瑞芯微RK3588开发板VSCode远程开发全攻略:从SSH配置到插件优化

本文详细介绍了如何在瑞芯微RK3588开发板上配置VSCode远程开发环境。从Ubuntu系统下的SSH服务设置、VSCode Remote-SSH扩展安装,到连接建立、基础工具链部署,再到针对ARM平台的性能优化与调试配置,提供了一套完整的实战指南,帮助开发者高效利用本地资源进行嵌入式开发。

weixin_28831341的博客 622

视频压缩实战:H.264 与 H.265 对比、码率调优与免费在线工具实测

视频压缩的核心是有损压缩 + 帧间预测,静态画面压缩率高,动态画面压缩率有限。H.264 兼容性最好,H.265 体积更小但编码慢、兼容性差,按场景选择。码率不是越高越好,结合分辨率和画面复杂度合理设定,VBR 优先。在线工具方便但有隐私和文件大小限制,浏览器端处理是隐私友好的新方向。不想用 FFmpeg 命令行,可以用 HandBrake 等图形工具,或用 Python 封装。压缩没有银弹,但掌握了原理和参数,你就能在体积和画质之间找到最适合自己的平衡点。

nannanziya的博客 555

奥比中光Dabai深度相机SDK在Ubuntu22.04的兼容性安装指南

本文详细指导如何在Ubuntu22.04系统上安装奥比中光Dabai深度相机的SDK。针对新旧版本不兼容的核心问题,重点推荐使用经过验证的v1.10.18版本SDK,并提供了从系统依赖检查、SDK下载安装、Python环境配置到编译测试的完整步骤,帮助用户成功解决安装难题并实现相机驱动。

j2k3l4的博客 1000

Apache Hop环境搭建实战:从零到一的下载、安装与配置指南

本文详细介绍了Apache Hop环境搭建的全过程,包括下载、安装与配置指南。从选择正确的JDK17版本到设置关键环境变量,再到启动GUI界面和解决常见问题,提供了全面的实战指导。适合数据工程师和ETL开发者快速上手这一强大的数据集成工具。

weixin_42634811的博客 574

按目标大小压缩视频:码率反推公式、H.264/H.265 实测与 FFmpeg 自动化

需求很朴素:**把任意一段视频压到指定的 MB 数以内**,比如 Discord 免费用户的 10 MB、Gmail 附件的 25 MB。 这个需求看着简单,但 FFmpeg 并没有 --target-size 25MB 这样的参数。CRF 模式是恒定质量、可变码率,你事先不知道输出多大;ABR 模式虽然能指定码率,但需要你自己把"目标大小"换算成码率,还要处理音频占用、容器开销这些细节。 这篇文章把整个链路讲透:**码率反推公式 → 单遍 vs 两遍编码 → H.264/H.265 实测对比 → P...

时光冉冉,我们都在变 497

Centos 7 Linux 安装单机 Hadoop(HDFS):下载、安装、配置、测试

本文详细介绍了在 CentOS 7 系统上安装与配置单机 Hadoop(HDFS)的完整流程,涵盖 JDK 环境准备、Hadoop 安装包下载与部署、核心配置文件(core-site.xml、hdfs-site.xml 等)修改、SSH 免密登录设置、HDFS 格式化及服务启动,并通过命令行与 Web 界面验证 HDFS 和 YARN 功能,适合 Hadoop 初学者快速搭建本地测试环境。

寒水馨 · 轻量级技术文档 · hanshuixin.org 3235

萤石摄像头H.265改H.264,三步解决录像卡顿与录像机不兼容

在视频监控领域,H.265与H.264是两种主流的视频编码标准。H.265在同等画质下码率更低,节省存储和带宽,但解码复杂度高,导致老款播放器、低配电脑或旧型号录像机无法正常解析,出现卡顿、黑屏或连接失败等问题。理解码流类型是排查这类兼容性故障的起点:主码流负责高清录像,子码流负责低延迟预览,两者均可独立设置编码方式。当遇到回放不流畅或第三方录像机拒绝接入时,将编码从H.265切换为H.264是常用且有效的解决方案。针对萤石摄像头的具体操作,可通过萤石云视频App远程修改、Web控制台批量调整,或进入本地管

weixin_29190169的博客 336

信捷PLC XD5系列运动控制(10轴)编程应用篇

项目PLC采用XD5-60T10-E,36DI 24DO 晶体管输出,支持10路脉冲输出功能。TMR指令定时器时基可以自己设定,这点比其他品牌PLC方便。ZRN指令我们需要上升沿指令触发。 5、变址寻址 该说不说这个变址寻址是真的强,比西门子指针、三菱的变址寄存器Z 、V都要更加灵活。 7、特殊寄存器:时钟 8、如何建立PLC通讯...............

RXXW_Dor的博客 1万+

openclaw通俗入门系列9——流式传输 + 分块

流式传输 = 不等写完就开始发。分块流式传输是把长回复切成几条消息发(所有渠道),草稿流式传输是像打字一样实时显示(仅 Telegram)。可以配置块大小、发送时机、合并规则、类人延迟。

m0_60605453的博客 506

从H.264/H.265裸码流解析SPS:手把手获取视频宽高与帧率

视频编码是数字媒体处理的核心技术,它将原始像素数据压缩为高效的码流以节省存储与带宽。其原理依赖于一系列复杂的语法结构,其中序列参数集(SPS)作为码流的“宪法”,定义了视频序列解码所需的全局参数。理解并解析SPS具有重要的技术价值,它使开发者能在容器信息缺失或现成库不适用(如嵌入式环境、自定义协议分析)的场景下,直接获取视频的根本属性。在音视频开发、流媒体分析和性能优化等应用场景中,从H.264或H.265的裸码流中手动解析SPS,提取视频的宽度、高度及计算帧率,是一项关键的底层技能。本文聚焦于指数哥伦布编

weixin_32296621的博客 308

CAMERALINK硬件封装说明

闲言少叙,直接上活,Cameralink硬件接口当前主要分为MDR26和SDR26两种,其中MDR对应封装较大价格比较便宜,SDR对应尺寸较小价格比较贵,这点我个人总是记错的图1 MDR26实物图图2 SDR26实物图。

6170
上一篇: 口述H.264编码器框架
下一篇: FFmpeg源码剖析-通用:avcodec_register_all()
北雨南萍
北雨南萍 领域专家: 操作系统技术领域 领域专家: 操作系统技术领域
博客等级 码龄20年 2665粉丝 453原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北雨南萍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值