首页 > 其他分享 >H264 NALU

H264 NALU

时间:2024-07-23 20:28:54浏览次数:11  
标签:视频 H.264 编码 H264 解码 传输 NALU

H.264

是一种广泛使用的视频压缩标准,全称是MPEG-4 Part 10 AVC(Advanced Video Coding)。它通过有效的压缩技术,能够在较低的比特率下提供高质量的视频。以下是对H.264的一些关键概念和工作原理的详细讲解:

1. 编码原理
H.264采用帧内和帧间预测技术来压缩视频数据。它将视频分为若干个连续的帧进行传输,其中包括三种主要类型的帧:

I帧(Intra-coded frame): 即帧内编码帧,是独立的帧,不依赖于其他帧进行解码。I帧通常用于场景变化处或者作为刷新点,以确保视频流的同步和解码的稳定性。
P帧(Predicted frame): 即预测编码帧,利用前面的I帧或P帧进行预测编码。P帧通过参考之前的帧,存储的是当前帧与参考帧之间的差异信息,从而实现压缩。
B帧(Bi-predictive frame): 即双向预测帧,利用前后的I帧和P帧进行预测编码。B帧通过参考前后两帧的差异信息进行编码,压缩效率最高,但也最复杂。
2. GOP(Group of Pictures)
H.264视频序列中的帧被组织成一个个的GOP。每个GOP通常以一个I帧开始,后面跟随若干个P帧和B帧。GOP的长度和结构可以根据具体应用需求进行调整。

3. 编码结构
H.264的编码结构包括宏块和块的划分。每帧图像被划分为若干宏块,每个宏块进一步划分为更小的块。这种多层次的划分有助于提高编码的灵活性和压缩效率。

4. IDR帧(Instantaneous Decoding Refresh)
IDR帧是一种特殊的I帧,它不仅可以独立解码,还可以作为解码器刷新点。当解码器遇到IDR帧时,会清空参考帧队列,重新开始新的序列。这保证了视频流的同步和解码的可靠性。

5. NALU(Network Abstraction Layer Unit)
H.264视频数据通过NALU进行传输,每个NALU包含一个编码后的视频数据片段。NALU的结构使得H.264视频数据可以在不同的网络环境下传输,包括有线网络和无线网络。

6. 主要优点
高压缩率: 相较于其他视频编码标准,H.264可以在较低的比特率下提供更高质量的视频。
灵活性: H.264支持多种分辨率和比特率,适用于不同的应用场景,包括高清电视、流媒体、视频会议等。
适应性强: H.264的编码和解码算法能够适应不同的网络条件和终端设备,提供稳定的性能。
7. 应用场景
H.264广泛应用于各类视频处理和传输场景,如:

网络视频流媒体: 如YouTube、Netflix等视频平台。
视频会议: 提供高质量的视频通话体验。
高清电视广播: 如DVB、ATSC等数字电视标准。
监控系统: 提供高效的视频压缩和传输。
结论
H.264作为一种先进的视频编码标准,通过其高效的压缩算法和灵活的编码结构,广泛应用于各类音视频处理和传输场景。理解H.264的基本概念和工作原理,有助于在实际应用中更好地利用这一标准,提升视频质量和传输效率。

NALU(Network Abstraction Layer Unit)

NALU是H.264视频编码标准中的一个重要概念,用于将编码后的视频数据进行封装和传输。以下是对NALU的详细讲解:

1. NALU的基本概念
NALU是网络抽象层单元的缩写,是H.264标准中用于封装和传输视频数据的基本单位。每个NALU包含了一段编码后的视频数据,可以是一个完整的帧,也可以是帧的一部分。NALU的结构设计使得视频数据可以在不同的网络环境下传输,包括有线网络和无线网络。

2. NALU的组成部分
每个NALU由以下几个部分组成:

NALU头部: 包含了NALU的类型、优先级等信息。NALU头部的前两个字节用于标识NALU的类型,比如I帧、P帧、B帧以及其他参数集(如SPS、PPS)。
NALU负载: 实际的视频数据或参数数据。负载部分存储了经过编码的视频数据片段。
3. NALU的类型
NALU的类型决定了其负载数据的内容。常见的NALU类型包括:

SPS(Sequence Parameter Set): 序列参数集,包含了一组编码视频序列的全局参数,比如分辨率、帧率等。解码器需要这些参数来正确解码视频序列。
PPS(Picture Parameter Set): 图像参数集,包含了某一序列中某一帧图像或者某几帧图像的参数。PPS用于细化SPS中定义的参数。
I帧(Intra-coded frame): 帧内编码帧,独立解码生成完整的图像,不依赖其他帧。
P帧(Predicted frame): 前向预测编码帧,需要参考其前面的一个I帧或P帧来生成完整的图像。
B帧(Bi-predictive frame): 双向预测内插编码帧,参考其前面一个或多个I帧或P帧及其后面的一个P帧来生成完整的图像。
4. NALU的结构
NALU的结构包括视频编码层(VCL)和网络抽象层(NAL)两部分:

VCL(Video Coding Layer): 包括核心压缩算法和语法定义,设计目标是尽可能独立于网络进行高效的压缩和解码。
NAL(Network Abstraction Layer): 用于封装VCL产生的数据,确保视频数据可以在各种网络环境下传输。NALU将VCL的数据片段封装成独立的单元,便于在网络上传输和解码。
5. NALU的传输过程
NALU的传输过程如下:

编码: 视频编码器将视频数据按照H.264标准进行压缩编码,生成VCL数据。
封装: 编码后的VCL数据被封装到NALU中,形成一个个独立的NALU单元。
传输: NALU通过网络进行传输,可以采用RTP(Real-time Transport Protocol)等协议。
解封装: 接收端对NALU进行解封装,提取出VCL数据。
解码: 解码器根据SPS和PPS等参数,使用VCL数据对视频进行解码,生成最终的视频图像。
6. NALU在实际应用中的作用
在实际应用中,NALU使得H.264编码的视频数据能够灵活适应不同的传输环境,确保视频流的同步和质量。它的设计使得视频数据可以在不可靠的网络环境下实现稳定传输,并且能够在丢包、延迟等情况下保持较好的解码效果。

结论
NALU是H.264标准中关键的一部分,通过将编码后的视频数据进行有效的封装和传输,确保了视频数据在各种网络环境下的可靠传输和高效解码。理解NALU的结构和工作原理,有助于在视频处理和传输中更好地应用H.264标准,提高视频的传输质量和观看体验。

标签:视频,H.264,编码,H264,解码,传输,NALU
From: https://www.cnblogs.com/mxh010211/p/18319578

相关文章

  • 音视频开发—使用FFmpeg从纯H264码流中提取图片 C语言实现
    文章目录1.H264码流文件解码流程关键流程详细解码流程详细步骤解析2.JPEG编码流程详细编码流程详细步骤解析3.完整示例代码4.效果展示从纯H.264码流中提取图片的过程包括解码和JPEG编码两个主要步骤,以下是详细阐述1.H264码流文件解码流程关键流程查找编解码器......
  • Qt/C++音视频开发78-获取本地摄像头支持的分辨率/帧率/格式等信息/mjpeg/yuyv/h264
    一、前言上一篇文章讲到用ffmpeg命令方式执行打印到日志输出,可以拿到本地摄像头设备信息,顺藤摸瓜,发现可以通过执行ffmpeg-fdshow-list_optionstrue-ivideo="Webcam"命令获取指定摄像头设备的分辨率帧率格式等信息,会有很多条。那为什么需要这个功能呢?现场大量应用下来,尽管......
  • openh264 宏块级码率控制源码分析
    openh264宏块级码率控制函数关系宏块级核心函数分析WelsRcMbInitGom函数功能:openh264码率控制框架中宏块级码率控制函数,根据是否启用GOMQP来决定如何设置宏块的QP值,以控制编码的质量和比特率。原理过程:函数参数:pEncCtx:指向编码上下文的指针,包含编码过程中所......
  • openh264 帧级码率控制源码分析
    openh264码率控制结构关于openh264码率控制整体结构,可以参考:openh264码率控制原理框架。openh264帧级码率控制介绍函数关系图:从图可以看出,帧级码控的核心函数就是WelsRcPictureInitGom、WelsRcPictureInfoUpdateGom函数。帧级码率控制核心函数介绍WelsRcPictureI......
  • openh264 帧内预测编码原理:WelsMdI4x4 函数
    介绍功能:针对4x4像素块的帧内模式决策原型:int32_tWelsMdI4x4(sWelsEncCtx*pEncCtx,SWelsMD*pWelsMd,SMB*pCurMb,SMbCache*pMbCache)参数:sWelsEncCtx*pEncCtx:指向编码上下文结构的指针,包含编码过程中需要的状态信息。SWelsMD*pWelsMd:指向运动检测结构的......
  • BK7258--wifi音视频soc芯片,1080P H264 wifi低功耗保活,内置BLE,音频code,psram,flash,USB2.
    BK7258是上海博通推出的高度集成的Wi-Fi+BLE combo音视频芯片,支持UVC和DVP摄像头,该芯片集成音视频外设及接口,1080P,H.264,低功耗,内置flash,dsp,psram,驱屏,回声消除及降噪等,广泛适用于可视猫眼,门锁,门铃,ipc,内窥,儿童相机等应用市场。可视门铃应用:DVP接口支持720p25fps图像采集;MJPE......
  • ffmpeg编码之实现YUV转换成H264
    方法1:命令转换#转换ffmpeg-s720*1280-pix_fmtyuv420p-iinput.yuv-vcodeclibx264-b:v4096k-bf0-g10-r30output.h264#播放ffplayoutput.h264方法2:代码转换 main.c#include"libavutil/log.h"#include"libavutil/avutil.h"#include......
  • ffmpeg提取H264视频数据
    方法1:命令提取ffmpeg-iinput.mp4-an-vcodeccopyout.h264ffmpeg-iinput.mp4-an-vcodeccopy-bsf:h264_mp4toannexbout1.h264方法2:代码提取 main.c#include"libavutil/log.h"#include"libavformat/avformat.h"#include"libavut......
  • H264/AVC-帧内预测相邻像素推导过程
    帧内预测过程会以相邻块的像素值做参考,来预测当前块的像素值。以Intra_4x4为例,如下图所示,需要用到的13个相邻像素值,那么如何获取这13个像素值?本文要主要说明如何获取帧内预测所用到的相邻像素。获取相邻像素的流程如下:找到当前块(可以为4x4、8x8、16x16大小)的左、上、......
  • H264编码分析及隐写实践
    H264编码分析及隐写实践目录1视频数据层级2H264裸流3NALU4RBSP4.1指数哥伦布熵编码5NALU种类6实践6.1修改IDR帧类型6.2修改其他帧类型6.3重新封装6.4修复7总结8参考CTF竞赛中经常出现图片隐写,视频作为更高量级的信息载体,应当有更大的隐写空间......