视频编解码 — H264结构

news/2024/11/16 14:45:28/

目录

帧类型

GOP

Slice

宏块

码流格式

NALU


帧类型

 帧类型预测方式参考帧特点
I帧帧内编码帧帧内预测能独立编解码,压缩率小
P帧前向编码帧帧间/帧内预测参考前面已经编码的帧和P帧压缩率比I帧高,必要参考帧才能解码
B帧双向编码帧帧间/帧内预测参考前面或者后面已经编码的I帧和P帧压缩率最好,需要存储帧,延时高

IDR帧,立即刷新帧,

        IDR帧之后的帧不参考IDR帧之前的帧,避免错误帧传递。

        IDR帧是特殊的I帧。普通的I帧就是指当前帧只使用帧内预测编码,但是后面的P帧和B帧还是可以参考普通的I帧之前的帧。一般情况下不太使用这种普通I帧,大多数情况下还是直接使用IDR帧。

GOP

        从一个IDR帧开始,到下一个IDR帧的前一帧为止。称为一个GOP(图像组)

        IDR帧间隔越大,两个IDR相隔就会越远

        GOP越大,编码的I帧就会越少,相对而言P帧,B帧压缩率就越高。

        但GOP太大,点播场景进行视频的seek操作就会不方便。

        RTC和直播场景中,网络丢包,引起长时间的花屏和卡顿

Slice

        为了并行编码设计的,一帧图像可以划分几个Slice,之间相互独立,互不依赖,独立编码

        可以使用多线程对多个Slice进行编码,提高编码速度。

        slice相互独立,帧内预测,不能跨Slice进行,因此编码性能差一些。

宏块

        H264中编码的基本单元

        一个Slice包含整数个宏块

        宏块MB大小是16x16

        在做帧内预测和帧间预测时,宏块又可以划分为不同大小的子块

        以上概念之间的关系如下


码流格式

        1、Annexb格式:

        使用起始码表示一个编码数据的开始,起始码不是图像编码的内容,只是用来分割。

        两种起始码

                4字节的 00 00 00 01

                3字节的 00 00 01

         如果编码图像中出现00 00 00 01 ;00 00 01;h264图像编码时做以下处理

                00 00 00 修改为 00 00 03 00

                00 00 01 修改为 00 00 03 01

        2、MP4格式:

        没有起始码,在图像编码数据的开始使用了4字节作为长度标识,用来表示编码数据的长度。

NALU

        H264两个重要的参数集

        SPS 序列参数集:主要包含图像的宽、高、YUV格式和位深等信息

        PPS 图像参数集:主要包含熵编码类型,基础QP和最大参考帧数量等基本编码信息;

H264码流结构组成如下

如何在码流中找到相应的帧内容 ?

H264设计了NALU 网络抽象层单元

                                NALU Header + NALU Data

  • Header 头里有相应的位表示NALU类型,对于非I帧,还要继续解析 Slice Header。
  • Slice header 中有 first_mb_in_slice字段,表示当前Slice的第一个宏块MB在当前编码图像中的序号。用来区分当前Slice 是否是一帧的第一个Slice,等于0代表是。 

实战分析

1)一段h264码流分析

红色为起始码,后面跟的是帧类型。

67为SPS帧  68为PPS帧  65为IDR帧。

2)使用Elecard Stream Analyzer工具分析

 参考 

https://ke.qq.com/course/3202131?flowToken=1040744


http://www.ppmy.cn/news/598672.html

相关文章

视频编解码流程

相关索引:https://blog.csdn.net/knowledgebao/article/details/84776869 编解码大概流程图(上边是编码,下边是解码): 1,编码过程: Motion Estimate(运动估计,运动搜索): 从前几帧中寻找匹配的宏块&#xf…

Hi35xx视频编解码器

这些都是概念性的东东,不过,能够理解,懂,肯定非常ok了。 视频编解码器是一个支持H.264、JPEG/MJPEG协议的视频编码和视频解码的处理单元,它由运行于ARM处理器上的Video Codec Firmware 和内嵌的视频编解码硬件加速引擎…

3-视频编解码基础

视频编解码基础.md 视频编解码算法分为传统算法和基于深度学习的方法,本文主要介绍视频编解码技术的原理,部分内容和图片参考网上技术博客(链接已放在文章末尾)。 毕设项目演示地址: 链接 毕业项目设计代做项目方向涵盖&#xff…

视频监控与视频编解码技术

视频监控与视频编解码技术 参考文献链接 https://mp.weixin.qq.com/s/UW4Z0vu_Wypc0ddymrOkpg https://mp.weixin.qq.com/s/RfsTTNekpJeIX5DH4ViAqg https://mp.weixin.qq.com/s/smj5bsqXgKuz7RvoLqFKjg https://mp.weixin.qq.com/s/p5gB7q03YfhN-0N7LvQ43g 安防智能视频监控系…

视频编解码之H.264

编解码的必要性 1.为什么要压缩 节省传输带宽;编码可以将数据进行压缩,减少传输资源浪费。节省存储空间:当显示器正在播放一个1280*720视频,帧率是25,那么一秒所产生正常的数据大小为:1280*720(位像素)*25(张) / 8(1字节8位)(结果:B) / 1024(结果:KB) / 1024 (结果:MB) …

视频编解码(三):H265编码器

一、H265编码框架 1)帧内预测:利用当前图像已编码像素生成预测像素值,主要去除空间冗余信息。 35种预测模式:33种帧内预测模式DC预测模式planar预测模式 2)帧间预测:利用当前图像已经编码图像重…

H3C数通 H3CNE H3CSE 资料下载 肖哥视频下载

说明1:由于百度云链接经常自动失效,建议将链接全部收藏到自己的百度云盘。收藏后,即使我这边失效甚至删除,文件也依旧存在于你的网盘中。 说明2:有时提示链接失效或链接打不开,可以尝试其他浏览器打开 如&…

「2024」预备研究生mem-概率基础加法公式乘法公式古典概型基础

一、概率基础 二、加法公式 三、乘法公式&古典概型基础 均不是1点 除了不是1的概率 不全是1点:也有可能是1点, 理解为 对是1点取非 相互独立 相乘 古典概型: 从A出发,先到B, 先到D,先到C(…