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

音视频——视频流H264编码格式

1 H264介绍

我们了解了什么是宏快,宏快作为压缩视频的最小的一部分,需要被组织,然后在网络之间做相互传输。

H264更深层次 —》宏块 太浅了

​ 如果单纯的用宏快来发送数据是杂乱无章的,就好像在没有集装箱 出现之前,货物总是随意被堆放到船上。

上货(编码),下货是非常痛苦的。 当集装箱出现之后,一切都发生了改变,传输效率大大增高。

​ 集装箱可以理解成H264编码标准,他制定了相互传输的格式,将宏快 有组织,有结构,有顺序的形成一系列的码流。这种码流既可 通过 InputStream 网络流的数据进行传输,也可以封装成一个文件进行保存

**H264: H264/AVC是广泛采用的一种编码方式。**主要作用是为了传输

1.1 H264码流组成

组成H264码流的结构中 包含以下几部分 ,从大到小排序依次是
H264视频序列,图像,片组,片,NALU,宏块 ,像素。
类似 地球 国家 城市 镇 村落

在这里插入图片描述

1.1.1 H264编码分层

  • NAL层:(Network Abstraction Layer,视频数据网络抽象层): 它的作用是H264只要在网络上传输,在传输的过程每个包以太网是1500字节,而H264的帧往往会大于1500字节,所以要进行拆包,将一个帧拆成多个包进行传输,所有的拆包或者组包都是通过NAL层去处理的。
  • VCL层:(Video Coding Layer,视频数据编码层): 对视频原始数据进行压缩

1.1.2 H264的传输

H264是一种码流 类似与一种不见头,也不见尾的一条河流。如何从和流中取到自己想要的数据呢,

在H264的标砖中有这样的一个封装格式叫做"Annex-B"的字节流格式。 它是H264编码的主要字节流格式。

几乎市面上的编码器是以这种格式进行输出的。起始码0x 00 00 00 01 或者 0x 00 00 01 作为分隔符

两个 0x 00 00 00 01之间的字节数据 是表示一个NAL Unit
在这里插入图片描述

1.1.3 编码结构

在这里插入图片描述

切片头:包含了一组片的信息,比如片的数量,顺序等等

1.1.4 H264码流分层结构图

在这里插入图片描述
H.264 的编码视频序列包括一系列的NAL 单元,每个NAL 单元包含一个RBSP。一个原始的H.264由N个NALU单元组成、 NALU 单元常由 [StartCode] [NALU Header] [NALU Payload] 三部分组成,其中 Start Code 用于标示这是一个NALU 单元的开始,必须是"00 00 00 01" 或"00 00 01"。

1.1.5 H.264网络传输

H.264的编码视频序列包括一系列的NAL单元,每个NAL单元包含一个RBSP

见表1。编码片(包括数据分割片IDR片)和序列RBSP结束符被定义为VCL NAL单元,其余为NAL单元。

典型的RBSP单元序列如图2所示。

RBSP 顺丰 头 顺丰公司尾部

每个单元都按独立的NAL单元传送。单元的信息头(一个字节)定义了RBSP单元的类型,NAL单元的其余部分为RBSP数据。
在这里插入图片描述

在这里插入图片描述
起始码:如果NALU对应的Slice为一帧的开始,则用4字节表示,即0x00000001;否则用3字节表示,0x000001。 NAL Header:forbidden_bit,nal_reference_bit(优先级),nal_unit_type(类型)。 脱壳操作:为了使NALU主体不包括起始码,在编码时每遇到两个字节(连续)的0,就插入一字节0x03,以和起始码相区别。解码时,则将相应的0x03删除掉。
在这里插入图片描述
H.264解码 NAL头信息的nal_referrence_idc(NRI)用于在重建过程中标记一个NAL单元的重要性,

  1. 值为0表示这个NAL单元没有用预测,因此可以被解码器抛弃而不会有错误扩散;
  2. 值高于0表示NAL单元要用于无漂移重构,且值越高,对此NAL单元丢失的影响越大。
  3. NAL头信息的隐藏比特位,在H.264编码器中默认为0,当网络识别到单元中存在比特错误时,可将其置为1。隐藏比特位主要用于适应不同种类的网络环境(比如有线无线相结合的环境)。
    在这里插入图片描述
    NAL单元解码的流程为:首先从NAL单元中提取出RBSP语法结构,然后按照如图4所示的流程处理RBSP语法结构。输入的是NAL单元,输出结果是经过解码的当前图像的样值点。 NAL单元中分别包含了序列参数集和图像参数集。图像参数集和序列参数集在其他NAL单元传输过程中作为参考使用,在这些数据NAL单元的片头中,通过语法元素pic_parameter_set_id设置它们所使用的图像参数集编号;而相应的每个图像参数集中,通过语法元素seq_paramter_set_id设置他们使用的序列参数集编号

相关文章:

音视频——视频流H264编码格式

1 H264介绍 我们了解了什么是宏快,宏快作为压缩视频的最小的一部分,需要被组织,然后在网络之间做相互传输。 H264更深层次 —》宏块 太浅了 ​ 如果单纯的用宏快来发送数据是杂乱无章的,就好像在没有集装箱 出现之前,…...

【使用深度学习的城市声音分类】使用从提取音频特征(频谱图)中提取的深度学习进行声音分类研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

机器学习完整路径

一个机器学习项目从开始到结束大致分为 5 步,分别是定义问题、收集数据和预处理、选择算法和确定模型、训练拟合模型、评估并优化模型性能。是一个循环迭代的过程,优秀的模型都是一次次迭代的产物。 定义问题 要剖析业务场景,设定清晰的目标…...

CK-00靶机详解

CK-00靶机详解 靶场下载地址:https://download.vulnhub.com/ck/CK-00.zip 这个靶场扫描到ip打开后发现主页面css是有问题的,一般这种情况就是没有配置域名解析。 我们网站主页右击查看源代码,发现一个域名。 把域名添加到我们hosts文件中。…...

17-C++ 数据结构 - 栈

📖 1.1 什么是栈 栈是一种线性数据结构,具有后进先出(Last-In-First-Out,LIFO)的特点。可以类比为装满盘子的餐桌,每次放盘子都放在最上面,取盘子时也从最上面取,因此最后放进去的盘…...

Redis如何实现排行榜?

今天给大家简单聊聊 Redis Sorted Set 数据类型底层的实现原理和游戏排行榜实战。特别简单,一点也不深入,也就 7 张图,粉丝可放心食用,哈哈哈哈哈~~~~。 1. 是什么 Sorted Sets 与 Sets 类似,是一种集合类型&#xff…...

Pycharm debug程序,跳转至指定循环条件/循环次数

在断点出右键,然后设置条件 示例 for i in range(1,100):a i 1b i 2print(a, b, i) 注意: 1、你应该debug断点在循环后的位置而不是循环上的位置,然后你就可以设置你的条件进入到指定的循环上了 2、设置条件,要使用等于符号…...

react实现markdown

参考&#xff1a;https://blog.csdn.net/Jack_lzx/article/details/118495763 参考&#xff1a;https://blog.csdn.net/m0_48474585/article/details/119742984 0. 示例 用react实现markdown编辑器 1.基本布局及样式 <><div classNametf_editor_header>头部&…...

HTTP请求走私漏洞简单分析

文章目录 HTTP请求走私漏洞的产生HTTP请求走私漏洞的分类HTTP请求走私攻击的危害确认HTTP请求走私漏洞通过时间延迟技术确认CL漏洞通过时间延迟技术寻找TE.CL漏洞 使用差异响应内容确认漏洞通过差异响应确认CL.TE漏洞通过差异响应确认TE.CL漏洞 请求走私漏洞的利用通过请求漏洞…...

BI-SQL丨两表差异比较

BOSS&#xff1a;哎&#xff0c;白茶&#xff0c;我们最近新上了一个系统&#xff0c;后续有一些数据要进行源切换&#xff0c;这个能整么&#xff1f; 白茶&#xff1a;没问题&#xff0c;可以整&#xff01; BOSS&#xff1a;哦&#xff0c;对了&#xff0c;差点忘记告诉你了…...

ZooKeeper 选举的过半机制防止脑裂

结论&#xff1a; Zookeeper采用过半选举机制&#xff0c;防止了脑裂。 原因&#xff1a; 如果有5台节点&#xff0c;leader联系不上了&#xff0c;其他4个节点由于超过半数&#xff0c;所以又选出了一个leader&#xff0c;当失联的leader恢复网络时&#xff0c;发现集群中已…...

【图论】树上差分(边差分)

一.简介 其实点差分和边差分区别不大。 点差分中&#xff0c;d数组存储的是树上的节点 边差分中&#xff0c;d数组存储的是当前节点到父节点的那条边的差分值。 指定注意的是&#xff1a;边差分中因为根连的父节点是虚点&#xff0c;所以遍历结果时应当忽略&#xff01; 二…...

RT1052的定时器

文章目录 1 通用定时器1.1 定时器框图1.2 实现周期性中断 2 相关寄存器3 定时器配置3.1 时钟使能3.2 初始化GPT1定时器3.2.1 base3.2.2 initConfig3.2.2.1 clockSorce3.2.2.2 divider3.2.2.3 enablexxxxx 3.3 设置 GPT1 比较值3.3.1 base3.3.2 channel3.3.3 value 3.4 设置 GPT…...

opencv python 训练自己的分类器

源码下载 一、分类器制作 1.样本准备 收集好你所需的正样本&#xff0c;和负样本&#xff0c;分别保存在不同文件夹 在pycharm新建项目&#xff0c;项目结构如下&#xff1a;has_mask文件夹放置正样本&#xff0c;no_mask文件夹放置负样本 安装opencv&#xff0c;把opencv包…...

详解Mybatis之分页插件【PageHelper】

编译软件&#xff1a;IntelliJ IDEA 2019.2.4 x64 操作系统&#xff1a;win10 x64 位 家庭版 Maven版本&#xff1a;apache-maven-3.6.3 Mybatis版本&#xff1a;3.5.6 文章目录 一. 什么是分页&#xff1f;二. 为什么使用分页&#xff1f;三. 如何设计一个Page类&#xff08;分…...

【基于矢量射线的衍射积分 (VRBDI)】基于矢量射线的衍射积分 (VRBDI) 和仿真工具(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

基于jackson对bean的序列号和反序列化

通过观察控制台输出的SQL发现页面传递过来的员工id的值和数据库中的id值不一致&#xff0c;这是怎么回事呢? 分页查询时服务端响应给页面的数据中id的值为19位数字&#xff0c;类型为long 页面中js处理long型数字只能精确到前16位&#xff0c;所以最终通过ajax请求提交给服务…...

排队理论简介

排队理论简介 1. 理论背景2. 研究的数学方法3. 拒绝型排队系统与等候型排队系统4. 拒绝型排队系统 本文参考文献为Вентцель Е. С.的《Исследование операций》。 1. 理论背景 排队理论又称大众服务理论&#xff0c;顾名思义指的是在有限的服务条…...

极速查找(3)-算法分析

篇前小言 本篇文章是对查找&#xff08;2&#xff09;的续讲二叉排序树 二叉排序树&#xff08;Binary Search Tree&#xff0c;BST&#xff09;&#xff0c;又称为二叉查找树&#xff0c;是一种特殊的二叉树。性质&#xff1a; 左子树的节点值小于根节点的值&#xff0c;右…...

http 常见的响应状态码 ?

100——客户必须继续发出请求101——客户要求服务器根据请求转换HTTP协议版本200——交易成功201——提示知道新文件的URL202——接受和处理、但处理未完成203——返回信息不确定或不完整204——请求收到&#xff0c;但返回信息为空205——服务器完成了请求&#xff0c;用户代理…...

机器学习笔记之优化算法(四)线搜索方法(步长角度;非精确搜索)

机器学习笔记之优化算法——线搜索方法[步长角度&#xff0c;非精确搜索] 引言回顾&#xff1a;精确搜索步长及其弊端非精确搜索近似求解最优步长的条件反例论述 引言 上一节介绍了从精确搜索的步长角度观察了线搜索方法&#xff0c;本节将从非精确搜索的步长角度重新观察线搜…...

Redis 哨兵 (sentinel)

是什么 官网理论&#xff1a;https://redis.io/docs/management/sentinel/ 吹哨人巡查监控后台 master 主机是否故障&#xff0c;如果故障了根据投票数自动将某一个从库转换为新主库&#xff0c;继续对外服务。 作用&#xff1a;无人值守运维 哨兵的作用&#xff1a; 1…...

统计2021年10月每个退货率不大于0.5的商品各项指标

统计2021年10月每个退货率不大于0.5的商品各项指标_牛客题霸_牛客网s mysql&#xff08;ifnull&#xff09;&#xff1a; select product_id, format(ifnull(sum(if_click)/nullif(count(*),0),0),3) as ctr, format(ifnull(sum(if_cart)/nullif(sum(if_click),0),0),3) as c…...

【小波尺度谱】从分段离散小波变换计算小波尺度谱研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

UE5、CesiumForUnreal加载无高度地形

文章目录 1.实现目标2.实现过程3.参考资料1.实现目标 在UE5中,CesiumForUnreal插件默认的地形都是带高度的,这里加载没有高度的地形,即大地高程为0,GIF动图如下: 2.实现过程 参考官方的教程,下载无高度的DEM,再切片加载到UE中。 (1)下载无高度地形DEM0。 在官方帖子…...

关于Spring中的@Configuration中的proxyBeanMethods属性

Configuration的proxyBeanMethods属性 在Configuration注解中&#xff0c;有两个属性&#xff1a; value配置Bean名称proxyBeanMethos&#xff0c;默认是true 这个proxyBeanMethods的默认属性是true。 直接说&#xff1a;当Configuration注解的proxyBeanMeathods属性是true…...

dp1,ACM暑期培训

D - 摆花 P1077 [NOIP2012 普及组] 摆花 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) Description 小明的花店新开张&#xff0c;为了吸引顾客&#xff0c;他想在花店的门口摆上一排花&#xff0c;共 m 盆。通过调查顾客的喜好&#xff0c;小明列出了顾客最喜欢的 n 种花&…...

大厂程序员的水平比非大厂高很多嘛?

最近一个月&#xff0c;筛选了一百多份简历&#xff0c;前前后后面试了二三十人&#xff0c;基本上都是有大厂经历的人。同时&#xff0c;也录用了几个有大厂经历的。但整体而言&#xff0c;打破了对大厂出来的都是优质人才的幻觉。看到的实际情况与想象中的落差还是比较大的。…...

Java开发工具MyEclipse发布v2023.1.2,今年第二个修复版!

MyEclipse一次性提供了巨量的Eclipse插件库&#xff0c;无需学习任何新的开发语言和工具&#xff0c;便可在一体化的IDE下进行Java EE、Web和PhoneGap移动应用的开发&#xff1b;强大的智能代码补齐功能&#xff0c;让企业开发化繁为简。 MyEclipse v2023.1.2官方正式版下载 …...

基于正交滤波器组的语音DPCM编解码算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ...........................................................g0zeros(1,lenH); g1zeros(1,l…...

做五金行业的外贸网站/荥阳网络推广公司

给客户的电脑装了杀毒软件&#xff0c;趋势企业版Worry-Free™ Business Security Standard Edition&#xff0c;一台作为服务器&#xff0c;其他大概6台左右为员工机器。最近客户报告问题&#xff1a;1无法更改桌面背景图片&#xff08;重启后又变回原来的桌面&#xff08;纯色…...

旅行网站定制公司/军事新闻最新24小时

命令作用&#xff1a; echo命令可以用于在屏幕上显示相关的文字信息&#xff0c;也可以用于显示批处理文件执行过程中的命令 命令格式&#xff1a; echo [{on|off}] [message] 参数说明&#xff1a; on: 允许窗口显示执行命令 off: 禁止窗口显示执行命令 message: 显示在…...

WordPress不用缓存插件/电商网站seo

java.util 类 Arrayspublic class Arrays extends Object 此类包含用来操作数组&#xff08;比如排序和搜索&#xff09;的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。 Arrays类提供的所有方法都是 static静态方法。使用类名可以直接调用使用。 数组是效率最…...

如何做自动采集视频网站源码/semen是什么意思

17.3 消费者群例子 消费群是多线程或多机器接收KafkaTopic。 17.3.1 消费者群 消费者可以通过使用相同的“group.id”来加入组。 组的最大并行数目是组中消费者数<分区数。 Kafka将Topic分区分配给组中的消费者&#xff0c;以便每个分区都由组中的一个消费者使用…...

网站内链优化策略/百度手机助手安卓版下载

YOLO v3整体是一个106层的全卷积网络&#xff0c;包括了残差模块&#xff0c;上采样模块&#xff0c;检测模块。 1.Get darknet 代码 $ git clone https://github.com/pjreddie/darknet 我们暂时先不开GPU&#xff0c;先做推理&#xff0c;安装GPU环境是一个痛苦的过程&…...

广东省城乡与住房建设厅网站/潍坊关键词优化平台

发布一个k8s部署视频&#xff1a;https://edu.csdn.net/course/detail/26967 课程内容&#xff1a;各种k8s部署方式。包括minikube部署&#xff0c;kubeadm部署&#xff0c;kubeasz部署&#xff0c;rancher部署&#xff0c;k3s部署。包括开发测试环境部署k8s&#xff0c;和生产…...