音视频入门基础:MPEG2-TS专题(8)——TS Header中的适配域
注:本文有部分内容引用了维基百科:https://zh.wikipedia.org/wiki/MPEG2-TS
一、引言
当TS Header中的adaptation_field_control属性的值为'10'或'11' 时,TS Header包含adaptation field(适配域):
根据《T-REC-H.222.0-202106-S!!PDF-E.pdf》第50到51页,适配域包含下图所示部分:
adaptation field(适配域) = 固定部分(固定2字节) + 可选部分 + 填充字节(stuffing_byte)
二、适配域的固定部分
适配域中的固定部分 = adaptation_field_length + discontinuity_indicator + random_access_indicator + elementary_stream_priority_indicator + PCR_flag + OPCR_flag + splicing_point_flag + transport_private_data_flag + adaptation_field_extension_flag
固定部分中的属性加起来总共2字节。
其中:
adaptation_field_length:占8位,为适配域长度,单位为字节,不包含当前字节(也就是说适配域长度不包含adaptation_field_length这个字节)。当adaptation_field_control的值为“11”时,适配域和载荷都存在,Adaptation_field_length的取值范围是0到182。当adaptation_field_control的值为“10”时,仅有适配域,Adaptation_field_length为183:
discontinuity_indicator:占1位,为不连续指示位。如果根据连续性计数器或PCR计算,确认当前分组处于不连续状态,则取值为1:
random_access_indicator:占1位,为随机访问指示位。如果当前分组是一个PES的起始,取值为1:
elementary_stream_priority_indicator:占1位,为ES优先级指示位。取值为1时ES优先级更高:
PCR_flag:占1位,为PCR标识。值为1表示适配域中有PCR域:
OPCR_flag:占1位,为OPCR标识。值为1表示适配域中有OPCR域:
splicing_point_flag:占1位,为接续点标识。值为1表示适配域中有接续倒数计数器域:
transport_private_data_flag:占1位,为传输私有数据标识,值为1表示适配域中有私有数据域:
adaptation_field_extension_flag:占1位,为适配域扩展标识,值为1表示适配域中有适配域扩展域:
三、适配域的可选部分
(一)PCR
根据《T-REC-H.222.0-202106-S!!PDF-E.pdf》第32页,program clock reference (节目时钟参考,PCR)为MPEG2-TS传输流中的时间戳,从中可以推导出解码器的时间:
PCR使得解码后的内容可以正确地同步播放。最多每100ms,接收方会从TS分组(transport packet)的适配域中得到特定节目的PCR值,PCR的PID由该节目的PMT中的PCR_PID域指定。解码系统应当基于PCR生成高精度的系统校时时钟(System Timing Clock,STC),用于同步声音ES和视频ES的内容。STC是MPEG-2系统里校时的基准。例如,表示时间戳(Presentation timestamp,PTS)的值即是以PCR值为基准的偏移量。
当适配域的固定部分中的PCR_flag属性的值为1时,适配域包含PCR域。PCR域 = 33位的低精度部分(program_clock_reference_base) + 6位的填充部分(reserved) + 9位的高精度部分(program_clock_reference_extension)
program_clock_reference_base属性为PCR_base(i),program_clock_reference_extension属性为PCR_ext(i):
根据《T-REC-H.222.0-202106-S!!PDF-E.pdf》第39页,system_clock_frequency(系统时钟频率)的值以Hz为单位,并应满足以下约束:
27 000000 – 810 ≤ system_clock_frequency ≤ 27 000000 + 810
system_clock_frequency随时间的变化率≤ 75 × 10^–3 Hz/s
也就是说system_clock_frequency的值约为27MHz:
根据《T-REC-H.222.0-202106-S!!PDF-E.pdf》第40页,有如下公式:
PCR(i) = PCR_base(i) × 300 + PCR_ext(i)
PCR_base(i) = ((system_clock_frequency × t(i)) ÷ 300) % 2^33
PCR_ext(i) = ((system_clock_ frequency × t(i)) ÷ 1) % 300
所以:
PCR = program_clock_reference_base × 300 + program_clock_reference_extension
更多关于PCR的测量方法可以参考:《https://download.tek.com/document/25W_14617_1.pdf》
(二)OPCR
OPCR为原PCR(Original PCR),格式与PCR相同,在TS复制时使用。当适配域的固定部分中的OPCR_flag属性的值为1时,适配域包含OPCR域。OPCR域 = 33位的original_program_clock_reference_base + 6位的reserved + 9位的original_program_clock_reference_extension:
(三)Splice countdown
根据《T-REC-H.222.0-202106-S!!PDF-E.pdf》第55页,Splice countdown为接续倒数计时器,指示从当前分组起多少个分组之后接续点出现(取值可为负)。当适配域的固定部分中的splicing_point_flag属性的值为1时,适配域包含Splice countdown域:
四、适配域的填充字节(stuffing_byte)
根据《T-REC-H.222.0-202106-S!!PDF-E.pdf》第61页,stuffing_byte为填充字节。其每个位的值都为1,可以由编码器插入,被解码器丢弃。所以适配域还有一个用途是给不足 188 字节的数据做填充:
相关文章:
音视频入门基础:MPEG2-TS专题(8)——TS Header中的适配域
注:本文有部分内容引用了维基百科:https://zh.wikipedia.org/wiki/MPEG2-TS 一、引言 当TS Header中的adaptation_field_control属性的值为10或11 时,TS Header包含adaptation field(适配域): 根据《T-RE…...
基于stm32单片机的教室节能系统设计
功能描述 0. STM32F103C8T6单片机为控制核心 1. OLED液晶显示当前年 月 日 时 分 秒 星期 2. 按键可以设置定时时间 3. 按键可以设置用电开关的开启和关闭时间,实现设备的节能 4. 通过红外遥控可以打开关闭空调设备(通过继电器开关闭合模拟&#x…...
mini主机通过内网穿透做成服务器
文章目录 简介1.ubuntu 的ssh server 安装2.ubuntu 的docker 安装3.ubuntu的curl的安装4.ubuntu的frp客户端安装5.ubuntu的docker compose安装6.声明 简介 主要目的 本地设备做成服务器,实现ssh远程登录以及内网穿透设备总成本1千多元(其实部分设备可以…...
智能桥梁安全运行监测系统守护桥梁安全卫士
一、方案背景 桥梁作为交通基础设施中不可或缺的重要组成部分,其安全稳定的运行直接关联到广大人民群众的生命财产安全以及整个社会的稳定与和谐。桥梁不仅是连接两地的通道,更是经济发展和社会进步的重要纽带。为了确保桥梁的安全运行,桥梁安…...
Selenium和Pyppeteer有什么区别?
Selenium和Pyppeteer都是自动化测试工具,它们可以模拟用户在浏览器中的操作,但它们之间存在一些关键的区别: Selenium 跨浏览器支持:Selenium支持多种浏览器,包括Chrome、Firefox、Internet Explorer等,而…...
82从零开始学Java之异常处理机制简介
作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦 CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 大家可以想一个问题,有没有谁能够做到开发项目时一个错误都不发生?如果谁能够做到这一点,那他可能真的是“天才”!但实际上,任何人都不可能在项目开发…...
Git上传本地项目到远程仓库(gitee/github)
目录 序言一、创建git本地版本库二、连接远程仓库(以gitee为例)三、将项目提交到git(本地)版本库1.由工作区添加到暂存区2.由暂存区添加到版本库 四、将代码由本地仓库上传到 gitee远程仓库1.获取远程库与本地同步2.把当前分支 ma…...
华为仓颉编程环境搭建
1、仓颉介绍 摘自华为官方:仓颉编程语言作为一款面向全场景应用开发的现代编程语言,通过现代语言特性的集成、全方位的编译优化和运行时实现、以及开箱即用的 IDE 工具链支持,为开发者打造友好开发体验和卓越程序性能。 其具体特性表现为&am…...
UE5 Line Trace By Channel(通道线条追踪)节点
在 Unreal Engine 5 (UE5) 中,Line Trace By Channel 是一个常用于进行物理射线检测(raycasting)的节点。它会沿着一条从起点到终点的直线发射一条射线,并检测射线与世界中任何物体的碰撞。这个节点广泛应用于枪械射击、检测物体、…...
DroneCAN 最新开发进展,Andrew在Ardupilot开发者大会2024的演讲
本文是Andrew演讲的中文翻译,你可以直接观看视频了解演讲的全部内容,此演讲视频的中文版本已经发布在Ardupilot社区的Blog板块,你可以在 Arudpilot官网(https://ardupilot.org) 获取该视频: 你也可以直接通过Bilibili链…...
UDP客户端服务器通信
在这篇博客中,我们将探索 UDP(用户数据报协议) 通信,简要地说,UDP 是一种无连接、快速但不可靠的通信协议,适用于需要快速数据传输但对丢包容忍的场景,比如视频流和在线游戏。就像《我是如此相信…...
适合中小型公司的自动化测试的测试框架,OpenSourceTest
适合中小型公司的自动化测试的测试框架,OpenSourceTest 文档地址: http://docs.opensourcetest.cn/代码仓库: https://github.com/chineseluo/opensourcetest安装方式: pip3 install opensourcetest -i https://pypi.tuna.tsin…...
实现跨语言通信:Rust 和 Thrift 的最佳实践
前言 在分布式系统中,服务之间高效且安全的通信至关重要。Apache Thrift 是一个被广泛应用的跨语言 RPC(远程过程调用)框架,它支持多种编程语言,包括 Rust。Rust 以其卓越的性能和内存安全保障,成为越来越…...
js判断空对象
1. 使用 Object.keys() 方法 Object.keys(obj) 方法返回一个包含对象可枚举属性名称的数组。如果返回的数组长度为 0,表示对象为空。 const isEmpty (obj) > Object.keys(obj).length 0;// 示例 const emptyObject {}; const nonEmptyObject { key: value …...
visionpro官方示例分析(一) 模板匹配工具 缺陷检测工具
1.需求:找出图像中的这个图形。 2.步骤 使用CogPMAlignTool工具,该工具是模板匹配工具,见名知意,所谓模板匹配工具就是说先使用该工具对一张图像建立模板,然后用这个模板在其他图像上进行匹配,匹配上了就说…...
PyCharm中Python项目打包并运行到服务器的简明指南
目录 一、准备工作 二、创建并设置Python项目 创建新项目 配置项目依赖 安装PyInstaller 三、打包项目 打包为可执行文件 另一种打包方式(使用setup.py) 四、配置服务器环境 五、上传可执行文件到服务器 六、在服务器上运行项目 配置SSH解释…...
cocos creator 3.8 合成大西瓜Demo 11
界面上的Node节点: 背景 警戒线 三面墙 初始位置节点 水果容器 先分组吧,墙 地板 水果 创建预制体 先挂一个脚本 刚体碰撞器先弄上再说 import { _decorator, Component, Node } from cc; const { ccclass, property } _decorator;ccclass(FruitData) e…...
Vue前端开发-动态插槽
不仅父组件可以通过插槽方式访问并控制子组件传入的数据,而且可以控制传入父组件时插槽的名称,从而使不同的插槽根据名称的不同,使用场景也不同,例如在一个小区详细页中,可以根据小区类型,调用不同名称的详…...
使用easyexcel导出复杂模板,同时使用bean,map,list填充
背景 在使用easyexcel导出时,如果遇到一个模板中同时存在 一部分是实体类中的字段,另外部分是列表的字段,需要特殊处理一下,比如下面的模板: 这里面 user, addr 是实体类(或者map)…...
最大值(Java Python JS C++ C )
题目描述 给定一组整数(非负),重排顺序后输出一个最大的整数。 示例1 输入:[10,9] 输出:910 说明:输出结果可能非常大,所以你需要返回一个字符串而不是整数。 输入描述 数字组合 输出描述 最大的整数 示例1 输入 10 9输出 910解题思路 题目要求 是:给定一…...
17.5k Star,ThingsBoard 一款开源、免费、功能全面的物联网 IoT 平台 -慧知开源充电桩平台
项目介绍 ThingsBoard是一个开源、免费、功能全面、灵活易用的物联网(IoT)平台,专注于数据收集、处理、可视化以及设备管理。它提供了一个全面的解决方案,用于构建和管理物联网应用。支持从各种设备收集数据,通过内置…...
《C++ 与神经网络:自动微分在反向传播中的高效实现之道》
在深度学习蓬勃发展的今天,神经网络成为了众多领域的核心技术驱动力。而反向传播算法作为训练神经网络的关键手段,其背后的自动微分技术的高效实现尤为重要,特别是在 C 这样追求性能与内存控制极致的编程语言环境下。 神经网络通过大量的参数…...
【CSS】设置文本超出N行省略
文章目录 基本使用 这种方法主要是针对Webkit浏览器,因此可能在一些非Chrome浏览器中不适用。 基本使用 例如:设置文本超出两行显示省略号。 核心代码: .ellipsis-multiline {display: -webkit-box; -webkit-box-orient: vertical; /* 设置…...
open-instruct - 训练开放式指令跟随语言模型
文章目录 关于 open-instruct设置训练微调偏好调整RLVR 污染检查开发中仓库结构 致谢 关于 open-instruct github : https://github.com/allenai/open-instruct 这个仓库是我们对在公共数据集上对流行的预训练语言模型进行指令微调的开放努力。我们发布这个仓库,并…...
DI依赖注入详解
DI依赖注入 声明了一个成员变量(对象)之后,在该对象上面加上注解AutoWired注解,那么在程序运行时,该对象自动在IOC容器中寻找对应的bean对象,并且将其赋值给成员变量,完成依赖注入。 AutoWire…...
TDengine在debian安装
参考官网文档: 官网安装文档链接 从列表中下载获得 Deb 安装包; TDengine-server-3.3.4.3-Linux-x64.deb (61 M) 进入到安装包所在目录,执行如下的安装命令: sudo dpkg -i TDengine-server-<version>-Linux-x64.debNOTE 当…...
【C#设计模式(15)——命令模式(Command Pattern)】
前言 命令模式的关键通过将请求封装成一个对象,使命令的发送者和接收者解耦。这种方式能更方便地添加新的命令,如执行命令的排队、延迟、撤销和重做等操作。 代码 #region 基础的命令模式 //命令(抽象类) public abstract class …...
XGBoost库介绍:提升机器学习模型的性能
XGBoost库介绍:提升机器学习模型的性能 在机器学习领域,模型的准确性和训练效率是最为关注的两大因素。特别是在处理大量数据和复杂任务时,传统的机器学习算法可能无法满足高效和准确性的需求。XGBoost(eXtreme Gradient Boostin…...
网络安全构成要素
一、防火墙 组织机构内部的网络与互联网相连时,为了避免域内受到非法访问的威胁,往往会设置防火墙。 使用NAT(NAPT)的情况下,由于限定了可以从外部访问的地址,因此也能起到防火墙的作用。 二、IDS入侵检…...
SpringMVC——SSM整合
SSM整合 创建工程 在pom.xml中导入坐标 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_…...
哪种网站/网页自动点击软件
文章目录前言一、方法1.使用TextBox层叠2.同步TextBox位置二、示例1.代码2.显示效果总结1.优点2.缺点前言 我上一篇文章写到了C# wpf textblock文字添加描边的一种方法 ,这里做个补充添加上TextBox用同样方法实现文字描边,但是TextBox和TextBlock还是有…...
重庆网站建设网站制作/武汉seo楚天
1. 编译单元,一个.cc,或.cpp作为一个编译单元.生成.o 2. 普通数据类型的定义,声明,函数的定义声明(类函数是一样的) extern int x; //变量是声明,并未实际分配地址,未产生实际目标代码void pr…...
视频网站主持人/卖链接的网站
各位玩家好!大家期待的破天一剑单机一键安装版终于问世了!!整个安装程序457M,无须安装SQL2000、补丁,破天单机一键安装,安装过程3分钟,全自动安装。。。20100207(农历小年),做人要厚道,非诚勿扰!设置如下:上线小退60级…...
为什么打开网址都是站长工具/seo站长常用工具
支付 uni.requestPayment 是一个统一各平台的客户端支付API,不管是在某家小程序还是在App中,客户端均使用本API调用支付。本API运行在各端时,会自动转换为各端的原生支付调用API。 uni.requestPayment( object ) 参数说明 provider 必填&am…...
做sorry动图的网站/合肥优化排名推广
现在越来越多的外国企业在中国开设分公司,很多人有很强的技术和能力,但是英语不行进不了外企。这是因为中国糟糕的英语教育导致的,我们大家都是学英语学了几十年到头来都是英语聋哑人。 本方法是笔者多年国内外学习英语的经历并结合语言专家们…...
中企动力网站建设精品案例/什么推广方式能快速引流
基于springboot实现协同过滤算法商品推荐系统演示开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Mav…...