音视频开发—H264码流组成

本文包含了编码过程的相关概念,如果不了解编码过程,请看这篇文章:H264相关概念和压缩原理详解
H.264视频编码标准将视频编码过程分为两个主要层次:视频编码层(VCL, Video Coding Layer)和网络抽象层(NAL, Network Abstraction Layer)。

文章目录

    • 视频编码层(VCL, Video Coding Layer)
      • VCL结构关系
    • 网络抽象层(NAL, Network Abstraction Layer)
    • H264码流相关概念
      • SODB(String Of Data Bits)
      • RBSP(Raw Byte Sequence Payload)
      • NALU(Network Abstraction Layer Unit)
      • H264切片:
    • 整体组成架构

视频编码层(VCL, Video Coding Layer)

  • 定义:VCL负责实际的视频数据编码。这一层执行视频压缩算法,将原始视频帧转换为压缩的比特流。
  • 功能:
    • 运动估计和补偿:减少时间冗余,通过参考前后帧来预测当前帧。
    • 变换和量化:减少空间冗余,使用离散余弦变换(DCT)等技术将图像数据转换为频率域并进行量化。
    • 熵编码:进一步压缩数据,通过无损编码技术如CABAC(上下文自适应二进制算术编码)或CAVLC(上下文自适应变长编码)进行压缩。
  • 输出:VCL生成的输出是SODB(String Of Data Bits),即原始数据比特流

VCL结构关系

每一个被压缩的视频帧由slice组成。大多数情况下,一帧图片帧对应一个slice,每一个slice 有很多宏块。宏块中又包含了子块。

在这里插入图片描述

网络抽象层(NAL, Network Abstraction Layer)

  • 定义:NAL负责将VCL生成的比特流封装成适合传输和存储的格式。NAL使得H.264编码的数据能够适应各种网络和存储环境。
  • 功能:
    • 封装和分片:将VCL生成的SODB封装成NAL单元(NALU),并根据需要将大的NALU分片。
    • 传输适应性:提供一种通用的格式,使视频数据能够在不同的传输协议(如RTP、MPEG-2 TS、HLS等)和存储格式(如MP4、MKV等)中传输和存储。
    • 错误恢复和同步:通过包含参数集(如SPS和PPS)和补充增强信息(SEI),提供错误恢复和流同步的支持。
  • 输出:NAL生成的输出是NALU(Network Abstraction Layer Unit),每个NALU包含一个NAL头和一个RBSP(Raw Byte Sequence Payload)。

H264码流相关概念

SODB(String Of Data Bits)

  • 定义:SODB是由视频编码层(VCL, Video Coding Layer)生成的原始数据比特流
  • 特性:长度不一定是8的倍数,这意味着在实际编码时,它可能需要进行一些填充以确保数据的对齐。

RBSP(Raw Byte Sequence Payload)

  • 定义:RBSP是对SODB进行处理后的数据,比SODB更接近传输格式。

  • 填充(Padding)

    :为了确保RBSP长度是字节的倍数(8的倍数),需要在SODB的末尾添加填充位。这些填充位通常是一个比特的"1"后跟零个或多个"0"。

    • 示例:假设SODB长度是10比特,RBSP将通过在末尾添加一个“1”比特和6个“0”比特,形成一个16比特(2字节)的数据。

NALU(Network Abstraction Layer Unit)

  • 定义:NALU是H.264码流的基本传输单元,由NAL头(NAL Header)和RBSP(Raw Byte Sequence Payload)组成。
  • 结构:
    • NAL头(NAL Header):包含关于NALU类型、优先级等的信息,通常是一个字节(8比特)。
    • RBSP(Raw Byte Sequence Payload):承载实际的编码数据,已经过填充处理以保证字节对齐。

相关关系如下图:

在这里插入图片描述

H264切片:

slice 储存在原始比特流中,slice包含了很多个宏块,宏块又包含了宏块类型,预测模式,残差值

在这里插入图片描述

整体组成架构

H264 码流分为两种类型,一种储存在文件中, 格式对应为Annexb 格式。一种通过网络传输,格式对应RTP格式。唯一的区别就是码流文件有起始码,而RTP包没有起始码

NALU是H.264码流的基本传输单元,由NAL头(NAL Header)和NALU Body组成。

NALU body 包含了具体的编码数据,这些编码数据由slice 组成。slice由许多的宏块组成,宏块又包含了宏块类型,预测模式,残差值压缩数据。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/668493.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue:Bin Code Editor格式化JSON编辑器

最终效果如下图所示, Bin Code Editor安装 npm或yarn安装命令如下, npm i bin-code-editor -S # or yarn add bin-code-editor 组件注册 全局注册 在 main.js 中写入导入以下内容, import Vue from vue; import CodeEditor from bin-cod…

0、机器学习知识点

机器学习知识点 知识点汇总 知识点汇总 https://blog.csdn.net/seagal890/article/details/105352987 https://blog.csdn.net/fengdu78/article/details/115878843

el-table超过宽度强制显示滚动条

使用css强制显示: .el-table .el-table__body-wrapper::-webkit-scrollbar {display: block; }

看图猜成语微信小程序源码

后台可以自行设置关卡、等级、也可以一键部署, 开通流量主之后实现躺赚,你懂得。 个人号也可以开通,审核一次性必过。 类目选择 教育,源码仅供您参考! 源码下载 https://download.csdn.net/download/huayula/8938579…

【RS】哨兵系列新网站无法下载的问题及解决办法(Sentinel-2)

最近有些小伙伴留言说哨兵数据无法下载,网站打开后会有一层蒙版,无法选取研究区等信息,今天就跟大家分享一下如何解决这个问题。还知道如何下载的小伙伴可以移步到之前的文章:【RS】欧空局Sentinel-2卫星数据下载(哨兵1、2、3、5P…

DNF手游6月5日更新亮点全解析!

在即将到来的6月5日更新中,《DNF手游》将迎来一系列令人振奋的新内容和玩法。本文将详细介绍本次更新的主要内容,包括新增的组队挑战玩法“罗特斯入门团本”,新星使宠物的推出,宠物进化功能的开放,以及六月下旬即将落地…

2023年03月 Python(六级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,共50分) 第1题 有如下程序段: with open(mistakes.txt, w) as f:words =[believe,

解决:写路由文件时引入页面路径没有提示

1、首先安装插件: Path Autocomplete 2、配置settings.json 文件 复制下面代码到settings.json配置文件中: "path-autocomplete.pathMappings": {"": "${folder}/src/","views": "${folder}/src/views/&…

数据可视化每周挑战——中国高校数据分析

最近要高考了,这里祝大家金榜题名,旗开得胜。 这是数据集,如果有需要的,可以私信我。 import pandas as pd import numpy as np import matplotlib.pyplot as plt from pyecharts.charts import Line from pyecharts.charts impo…

先进的无人机GPS/GNSS模块解决方案

由于多星座支持和增强的信号接收能力,先进的GNSS模块提供了更高的精度和可靠性。集成传感器融合补偿信号中断,实现无缝导航。内置实时运动学(RTK)支持提供厘米级的定位精度。这些模块还优先考虑低功耗和紧凑的尺寸,确保更长的飞行时间和对无人…

入手戴尔R720,通过iDRAC查看系统信息

想入手服务器很久了,一直担心功耗太高,今天狠心搞了一台戴尔服务器R720。 需求 开虚拟机,核心数要多 学习以下 Windows云桌面AD域控office online serverubuntu试验机 随便折腾不怕玩坏 最好两个网口以上 稳定 四个以上硬盘位 ‍ 为什么是…

信号稳定,性能卓越!德思特礁鲨系列MiMo天线正式发布!

作者介绍 礁鲨系列天线,以其独特的外观设计和强大的性能,成为德思特Panorama智能天线家族的最新成员。这款天线不仅稳定提供5G、WIFI和GNSS信号,更能在各类复杂环境中展现出卓越的性能。它的设计灵感来源于海洋中的礁鲨,象征着力量…

计算机考研|408 值得选择吗?有哪些优势?

408当然非常值得报考,但是现在的408已经卷麻了! 现在越来越多的学校改考408,光今年就有6所发布通知,宣布改考408,分别是: 这对考408的学生肯定是好消息,后面可能还会有学校陆续改考,…

SpringBoot项目实现自定义注解方式的接口限流

一,实现原理 该限流方式使用的是令牌桶算法,令牌桶算法是基于漏桶算法的一种改进,主要在于令牌桶算法能够在限制服务调用的平均速率的同时,还能够允许一定程度内的突发调用。 系统以固定的速率向桶中添加令牌当有请求到来时&#…

生态系统服务功能之土壤保持

大家好,今天我们开始新的生态系统服务功能模块,即土壤保持的相关内容介绍与计算。 土壤保持的定义 所谓土壤保持,指生态系统通过其结构与过程保护土壤,降低雨水的侵蚀能力,减少土壤流失,防止泥沙淤积的功…

JVMの内存泄漏内存溢出案例分析

1、内存溢出 内存溢出指的是程序在申请内存时,没有足够的内存可供分配,导致无法满足程序的内存需求,常见的内存溢出情况包括堆内存溢出(Heap Overflow)和栈溢出(Stack Overflow): …

K210视觉识别模块学习笔记4: 训练与使用自己的模型_识别字母

今日开始学习K210视觉识别模块: 模型训练与使用_识别字母 亚博智能的K210视觉识别模块...... 固件库: maixpy_v0.6.2_52_gb1a1c5c5d_minimum_with_ide_support.bin 文章提供测试代码讲解、完整代码贴出、测试效果图、测试工程下载 这里也算是正式开始进入到视觉识别的领域了…

DataGrip 数据库连接客户端

I DataGrip 安装 1.1安装 打开dmg镜像,将“DataGrip.app”拖入应用程序中; 1.2 Act 打开应用程序,点击试用模式启动软件,然后将“jetbrains-agent-latest”拖到任意位置,然后拖入,弹出对话框,点击“Rest…

IDEA调试前端html报错

IDEA调试前端html报错 报错如下: Waiting for connection to localhost:59004. Please ensure that the browser was started successfully with remote debugging port opened. Port cannot be opened if Chrome having the same User Data Directory is already …

.Net 基于.Net8开发的一个Asp.Net Core Webapi小型易用框架

1.项目结构 该项目是基于.net8开发的Asp.Net Core WebApi后端服务,集成了Efcore,Autofac,Jwt,AutoMapper,Serilog,Quartz,MiniExcel等组件。该框架简单易上手,没有额外的学习成本; 该项目采用了多层结构设计,有利于解耦,包含公共层&#xff0…