H264的打包,nal,es,pes,pts,dts,ps,ts

编码层次

  • 视频编码层:预测、变换、量化、熵编码等操作
  • slice层:将视频帧分割成若干个编码单元,包含一定数量的宏块,提高编解码的并行性和容错性。
  • NAL层:提升对网络传输和数据存储的亲和性

视频编码层

  • 基准-Baseline Profile:主要用于视频会议、可视电话等实时通信领域;支持IP帧,熵编码支持 CAVLC 算法
  • 主要-Main Profile:主要用于数字电视广播、数字视频数据存储等;支持视频场编码、IPB帧。熵编码支持 CAVLC 和 CABAC
  • 扩展-Extended Profile:主要用于网络视频直播和点播等;支持基准所有特性,支持 SI 和 SP 条带

编码的概念

  • 序列:一组变化不大的图像
  • 帧:一个视频图像编码后的数据,一帧由一片或多片组成、一片由多个宏块组成。宏块是编码的基本单位
  • GOP:图像组,类似与序列
  • IDR:立即刷新帧,一定是 I帧,清空参考帧缓冲区

分层结构

在这里插入图片描述

  • SODB:视频编码层输出编码的数据后,经过数据划分,输出 SODB(String of Data Bits)数据比特串

  • RBSP:NAL层 将 SODB 打包成 RBSP (Raw Byte Sequence Payload)原始字节序列负载,在SODB 后面添加1和若干0字节对齐

  • EBSP:Encapsulated Byte Sequence Payload, 扩展字节序列载荷,RBSP加上NAL头就是一个NALU 单元,起始码 三字节的 0x000001 或 四字节的 0x00000001。access unit ,pps,sps 是 四字节。

  • NALU结束是三字节的 0x000000,防止数据中间出现0x000000,中间每遇到两个0x00就插入一个0x03
    -在这里插入图片描述

  • NAL头:8位

    • F(forbiden)禁止位 0:为1时语法错误
    • NRI 参考级别 1-2:值越大,越重要
    • TYPE Nal 单元数据类型 3-7:数据类型
      在这里插入图片描述

参数集

SPS-序列参数集

  • profile信息,baseline,main,extended
  • 码流level,不同的level定义了最大分辨率,最大帧率,最大码率,1080P30FPS20Mbps是 Level4.0
  • 色彩空间
  • 码率控制参数
  • 熵编码参数

PPS-图像参数集

  • 图像类型:IPB
  • 参考帧选择
  • 解码器配置
  • 参数集索引

ES-Elementary Streams(原始流)

  • 包含视频和音频
  • 视频是 NALU
  • 音频则是音频帧
  • 只含视频或音频
  • 由若干个 AU(Access Unit)组成

PES-Packetized Elementary Streams(分组的 ES)

  • ES流经过PES打包器形成的数据流,将ES流分组,打包,加入包头信息

PTS PresentationTime Stamp(显示时间标记)、DTS Decoding Time Stamp(解码时间标记)

  • 打包在PES包头内
  • 解决音视频同步显示
  • 防止解码器输入缓存上溢或下溢
  • 每个 IPB 帧包头都有一个 pts dts
  • B帧可以不标记 dts,因为通常同时参考前后两帧
  • B帧的解码顺序和显示顺序可能不同

PS Program Stream(节目流)

  • 由若干个 PES 包组成
  • 包含同步信息和时钟恢复信息
  • 最多可包含同一时间基准的16个视频PES和32个音频PES包
  • 可变长度的
  • 信道环境较好,传输误码率较低时使用PS码流

TS Transport Stream(传输流)

  • 定长的 TS 包组成 188 字节,或加上16字节的 CRC 校验数据
  • 是对 PES 包的重新封装
  • 信道环境较为恶劣、传输误码率较高时使用TS码流
  • 头 四字节,负载 184字节
  • 在这里插入图片描述

PAT 表,PMT 表

  • 通常只用于数字电视,实际网络传输用不到

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云计算与大数据课程笔记(一)云计算背景与介绍

如何实现一个简易搜索引擎? 实现一个简易的搜索引擎可以分为几个基本步骤:数据收集(爬虫)、数据处理(索引)、查询处理和结果呈现。下面是一个概括的实现流程: 1. 数据收集(爬虫&am…

Nginx高级技巧:实现负载均衡和反向代理

文章目录 Nginx概述Nginx作用正向代理反向代理负载均衡动静分离 Nginx的安装 -->Docker3.1 安装Nginx3.2 Nginx的配置文件3.3 修改docker-compose文件 Nginx源码安装nginx常用命令nginx配置文件配置文件位置配置文件结构详情 Nginx的反向代理【重点】基于Nginx实现反向代理4…

C语言冒泡排序(高级版)

目录: 冒泡排序的原理 主函数 "冒泡排序函数" 比较函数 交换函数 最终输出 完整代码 冒泡排序的原理: 冒泡排序的原理是:从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右…

Windows上构建一个和Linux类似的Terminal

preview 目的是在Windows上构建一个和Linux类似的Terminal,让Windows炼丹和Linux一样舒适,同是让Terminal取代Xshell完成远程链接。 预览如下图 在Linux下我们使用zsh和oh-my-zsh结合,Windows下我们使用powershell7和oh-my-posh结合。 前提…

Vue 前端开发 v-for和v-if两个指令不能混合使用

原由: 在进行项目开发的时候因为在一个标签上同时使用了v-for和v-if两个指令导致的报错。 提示错误:The undefined variable inside v-for directive should be replaced with a computed property that returns filtered array instead. You should no…

nginx------------缓存功能 ip透传 负载均衡 (六)

一、http 协议反向代理 (一)反向代理示例:缓存功能 缓存功能可以加速访问,如果没有缓存关闭后端服务器后,图片将无法访问,缓存功能默认关闭,需要开启。 ​ proxy_cache zone_name | off; 默认off #指明调…

2023 版王道单科书勘误汇总(3.30)

注:因2023版对题目编号做了优化“历年真题全部放最后、且按年份排序”,以方便大家根据需要保留某些年份的真题作为最后的模拟。所以造成了一些题目和解析的编号错误。 数据结构: P11 P20 P56 P278 P326 “2.”中第 3 行”题 5改成”9”,第6行”题 8”改成…

css3详解

一.什么是CSS3 CSS3是Cascading Style Sheets的第三个版本,是一种用于描述文档样式的语言(CSS3是CSS(层叠样式表)技术的升级版本)。它是前端开发中用于控制网页布局和样式的技术之一。CSS3引入了许多新的特性和功能&a…

hexo图片显示不出且图片路径错误/.com//

参考博客: hexo 图片显示问题及使用typora设置图片路径-CSDN博客 javascript - hexo 图片路径错误/.com// - SegmentFault 思否 先说如何让hexo图片成功地显示出来 Step1: 修改config设置 将 _config.yml 设置文件中的 post_asset_folder 修改为 true 这一步的作…

windows下安装cnpm

cnpm是淘宝团队开发的一个针对中国用户的npm镜像源,它是npm的一个定制版本。由于国外的npm源在国内访问速度较慢,所以cnpm镜像源可以提供更快的下载速度。cnpm的使用方式与npm基本相同,只需将npm替换为cnpm即可。 要想使用cnpm等先安装node.…

反序列化逃逸 [安洵杯 2019]easy_serialize_php1

打开题目 题目源码&#xff1a; <?php$function $_GET[f];function filter($img){$filter_arr array(php,flag,php5,php4,fl1g);$filter /.implode(|,$filter_arr)./i;return preg_replace($filter,,$img); }if($_SESSION){unset($_SESSION); }$_SESSION["user&qu…

sizeof 和 strlen的区别

sizeof sizeof是单目操作符,sizeof计算变量所栈内存空间大小,单位是字节,如果操作数是类型的话,会计算类型所占大小,sizeof指在乎占用内存空间大小不在乎内容是什么. int main() {int a 0;printf("%zd\n", sizeof(a));printf("%zd\n", sizeof a );printf…

巧【二叉搜索树的最近公共祖先】【二叉搜索树的性质】Leetcode 235. 二叉搜索树的最近公共祖先

【二叉搜索树的最近公共祖先】【二叉搜索树性质】Leetcode 235. 二叉搜索树的最近公共祖先 【巧】解法1 利用二叉搜索树有序的性质解法2 采用二叉树求最近公共祖先的方法——后序遍历 ---------------&#x1f388;&#x1f388;235. 二叉搜索树的最近公共祖先 题目链接&#x…

Springboot+vue的制造装备物联及生产管理ERP系统(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频&#xff1a; Springbootvue的制造装备物联及生产管理ERP系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的制造装备物联及生产管理ERP系统&#xff0c;采用M&#xff…

AI学习集合-前瞻

AI学习前瞻 工作岗位 算法工程师机器学习工程师图像算法工程师ai工程师NLP高级算法工程师 学习路线 应用场景 计算机视觉技术应用场景 自然语言应用 AI流程 AI拟人流程 机器人历史数据经验模型规律依据模型预测未来依据规律做出判断 AI基本流程 术语所用到的技术手段数据数…

javascript中对包含关系判断介绍

本文将为您详细讲解 JavaScript 中对包含关系的判断&#xff0c;包括数组、字符串等&#xff0c;并提供相应的代码例子。 1. 数组包含关系判断 在 JavaScript 中&#xff0c;数组包含关系判断通常使用 Array.prototype.includes() 方法。这个方法返回一个布尔值&#xff0c;表示…

mac 本地使用dockerfile启动 springboot项目

1.创建Dockerfile放在项目的根目录下 2.编写Dockerfile FROM openjdk:11 MAINTAINER ChengLinADD target/JiaLi-0.0.1-SNAPSHOT.jar /app.jar# 暴露 Spring Boot 应用的端口号 EXPOSE 8088 # 启动 Spring Boot 应用 CMD ["java", "-jar", "app.jar&q…

前端学习第四天-css提升

达标要求 掌握css复合选择器 块级元素和行内元素及行内块的区别? 哪些元素是块元素,行内元素及行内块元素? 熟练掌握display的用法 能够说出css三大特性 熟练运用背景样式 1. CSS复合选择器 复合选择器是由两个或多个基础选择器&#xff0c;通过不同的方式组合而成的…

vue2结合electron开发跨平台应用(桌面端应用)

1.确定nodejs和electron的版本号 确定nodejs和electron的版本号及其重要&#xff0c;因为electron的开发版本需要指定的nodejs版本支持。 本文安装测试使用的是: 1.node18.19.0 2.npm10.2.3 3.vue-cli5.0.8 4.electron29.0.0 2.创建vue2项目 vue create elctron29.0.0_no…

zotero | 多平台同步 | 坚果云

zotero注册登陆 打开zotero软件&#xff0c;mac电脑打开首选项&#xff0c;如下图所示&#xff1a; 然后点击同步选项&#xff0c;如下图所示&#xff0c;如果已经有账号&#xff0c;请登陆账号&#xff0c;无则注册账号之后再登陆&#xff1b; 注册坚果云账号 注册完坚果…