TS包头语法结构(4个Byte)

2024-02-05 09:58
文章标签 ts byte 语法结构 包头

本文主要是介绍TS包头语法结构(4个Byte),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

http://blog.csdn.net/u013898698/article/details/65434590



TS包由4B的包头(header)、可变长度的调整头和净荷(payload)组成;



包头结构定义如下:

struct ts_header{

    char     syn_byte:8;                                       // 包头同步字节,0x47

    char     transport_error_indicator:1;         //传送数据包差错指示器

    char    payload_unit_start_indicator:1;    //有效净荷单元开始指示器

    char    transport_priority:1;                         //传送优先级

    int        PID:13;                                              //包ID

    char    transport_scrambling_control:2;                //传送加扰控制

    char    adaptation_field_control:2;           //调整字段控制

    char    continuity_conunter:4;                    //连续计数器 0-15

};


syn_byte:值为0x47,是MPEG-2TS的传送包标识符;

transport_error_indicator:值为1时,表示相关的传送包中至少有一个不可纠正的错误位,只有错误位纠正后,该位才能置0;

payload_unit_start_indicator:表示TS包的有效净荷带有PES或PSI数据的情况;当TS包的有效净荷带有PES包数据时,

payload_unit_start_indicator为1,表示TS包的有效净荷以PES包的第一个字节开始;为0,表示TS包的开始不是PES包;

当TS包带有PSI数据时,payload_unit_start_indicator为1,表示TS包带有PSI部分的第一个字节,即第一个字节带有指针pointer_field,为0表示TS包不带有一个PSI部分的第一个字节,即在有效净荷中没有指针pointer_field;对于空包的包,play_unit_start_indicator应该置为0;

transport_priority:置1表示相关的包比其他具有相同PID但transport_priority为0的包有更高的优先级;


PID:表示存储于传送包的有效净荷中数据的类型。


transport_scrambling_control:指示TS包有效净荷的加扰方式,如果首部包括调整字段,则不应该被加扰,对于空包,值要置“00”;


adaptation_field_control:传送流包首部是否跟随有调整字段和/或有效净荷。


continuity_conunter:随着具有相同PID TS包的增加而增加,当达到最大时,又恢复为0,如果调整字段控制值adaptation_field_control为“00”或“10”,则该连续计数器不增加;在TS中,当复用的包可能被作为两个连续的具有相同PID的TS包传送出去时,则复用的传送包与原传送包具有相同的continuity_counter,而adaptation_field_control字段值应为“01”或者"10"。在复用的包中,除了节目参考时钟PCR有效字段的值被重新编码外,原包中每个字节将被复制。

在特定的TS中具有相同PID包的continuity_counter是连续的,或与前一个具有相同PID的包相差1,但是遇到adaptation_field_control为“00”或“10”等不增加条件,或在调整字段中discontinuity_indicator为“1”时,continuity_counter将不连续。


这篇关于TS包头语法结构(4个Byte)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/680546

相关文章

vue ts 本地缓存数据

vue ts 本地缓存数据 需求是:给每日最高热度的数据,每个用户弹窗三次,持续五秒 // 每日最高热度 弹窗三次const popupKey = 'dailyPopupCount_';const today = new Date().toISOString().split('T')[0]; // dailyPopupCount_2024-08-26const popupCount =

记录一个拖拽组件vue3+ts

记录一个拖拽组件vue+ts “vue”: “^3.0.0” “typescript”: “~4.1.5” 我这个是vue 3的最高版本,可以使用defineModel 父组件 <h1>props传值</h1><ModuleOrder v-model:orderList="orderList" v-model:defaultList="defaultList" ></ModuleO

【TS高频面试题】interface与type的区别

参考文章 一、基本概念 1. type(类型别名) 用来给一个类型起新名字,使用 type 创建类型别名。 2. interface(接口) 专门用于定义对象的结构(比如属性和方法) 二、相同点 (1)都可以描述对象或函数 interface interface User {name: stringage: number}interface SetUser {(name: st

【TS】类(class)学习

类(class)基础概念 类定义:学习如何定义一个类,包括类的属性和方法。构造函数:理解构造函数的作用和如何使用它来初始化对象。访问修饰符:学习 public、private 和 protected 修饰符,以及它们如何控制属性和方法的访问权限。继承:理解如何通过继承来扩展类,以及如何使用 super 关键字调用父类的方法和构造函数。静态属性和方法:学习如何定义和使用静态属性和方法,这些属性和方

vs2017 Qt CMakeList.txt添加生成Qt LinguistTools的ts文件

#Qt国际化生成ts文件set(TS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/Resource/Translations")set(TS_FILES"${TS_DIR}/${PROJECT_NAME}_zh_CN.ts""${TS_DIR}/${PROJECT_NAME}_en.ts")find_program(LUPDATE_EXECUTABLE lupdate

Web前端 lucky-canvas【大转盘 九宫格 老虎机】抽奖插件(适用JS/TS、Vue、React、微信小程序、Uniapp和Taro)

Web前端 lucky-canvas 抽奖插件(JS/TS、Vue、React、微信小程序、Uniapp和Taro) 基于 JS + Canvas 实现的【大转盘 & 九宫格 & 老虎机】抽奖,致力于为 WEB 前端提供一个功能强大且专业可靠的营销组件,只需要通过简单配置即可实现自由化定制,帮助你快速的完成产品需求 自由配置 奖品 / 文字 / 图片 / 颜色 / 按钮均可自由配置;支持同步

ts 类型分类

目录 01 ts 相关指令 02 类型声明空间与变量声明空间 03 类型注解和类型推断 04 类型分类 , 联合类型与交叉类型 05 never类型  any类型 和unknown类型 01 ts 相关指令         全局安装 typescript 模块                 npm i -g typescript         安装完成之后 可以

TS 学习 (持续更新中)

如果我们在 ts 中写 不用运行就能在文件中报错 ts 是一种静态类型的检查 能将运行时出现的错误前置     一般不用 命令行编译   ts 转换成 js  将中文转码 tsc index(.ts)   输入命令生成 配置文件 能在中间进行 配置转换成 js 的哪个规范 es5 还是 6 和其它转换规范  做项目 用 vue react 都是用脚

Vue3 + Ts + Vite项目 websoket封装使用

文章目录 一、安装二、封装三、请求地址配置3.1 将接口地址放到 public3.2 引入 ipconfig.js 文件3.3 全局类型声明 四、页面使用4.1 引用4.2 注册 五、说明 一、安装 npm npm install websocket --save-dev pnpm pnpm install websocket --save-dev 二、

creator 物理引擎 骨骼动画 TS

物理引擎 cocos论坛 遇到坑: 1 不会发生碰撞:A无Collider碰撞组件. B未添加分组***重要 2 获取质量世界坐标=0? 弄了一天 3 碰撞回调函数不会调用;A 碰撞组件依附的节点下挂的脚本中有实现以下函数 B 开启enableContractListener 4 动态调整反弹力: 找不到函数,官网也找不到。setRestitution() 解决:断点看有哪些value和funct