TS流解析之PMT表格解析
- 格式:doc
- 大小:37.00 KB
- 文档页数:5
Excel高级函数之PMT函数的功能解析Excel是广泛应用于商务和财务领域的电子表格软件,其强大的计算功能和丰富的公式函数为用户提供了便利。
在Excel的高级函数中,PMT函数是一个常用的函数之一。
本文将对PMT函数的功能进行解析,并介绍其用法。
1. PMT函数的基本概念PMT函数是Excel中用于计算等额本金贷款的月还款额的函数。
它可以根据贷款额、贷款期限和贷款利率等参数,计算出每月应还的固定金额,方便用户进行贷款还款计划的制定和预测。
2. PMT函数的语法和参数PMT函数的语法如下:PMT(rate, nper, pv, [fv], [type])其中,各参数的含义如下:- rate:每个期间的利率,通常以年利率除以期数得到。
- nper:贷款的总期数,即还款的总次数。
- pv:贷款的总额,即贷款的本金。
- [fv]:(可选项)贷款到期时的未偿还金额,通常为0。
默认值为0。
- [type]:(可选项)还款方式,1表示期末还款,0或省略表示期初还款。
默认值为0。
3. PMT函数的示例和用法假设有一个贷款总额为10000元,贷款期限为3年,年利率为5%的等额本金贷款,我们可以使用PMT函数来计算每月应还的固定金额。
在单元格A1中输入"贷款总额",在A2中输入"贷款期限",在A3中输入"年利率"。
在B1中输入10000,B2中输入36(即12个月×3年),B3中输入5%。
然后,在B4单元格中输入PMT函数的公式: =PMT(B3/12,B2,B1)按回车键后,B4单元格即显示出每月应还的固定金额。
4. PMT函数的注意事项在使用PMT函数时,需要注意以下几点:- 利率和期数需要进行适当的换算,以确保计算结果的准确性。
- 贷款总额和其他参数应填写正确的数值,并注意数值的格式。
- 可以通过将参数值设为负数来表示现金的支出。
- PMT函数计算出的结果为负数,表示用户需要支付的金额,应使用绝对值函数(ABS)将结果转换为正数。
[ts 码流解析 ] ETSI TR101 290 监测的三种级别错误对于码流解析仪所供应 ETSI TR101 290 监测的三种级别错误,接收端将会出现以下现象。
级别 错误种类接收端现象同步丧失错 黑屏、静帧和马赛克、画面不流畅现 一象级 同步字节错 黑屏、静帧和马赛克、画面不流畅现 错 象误PAT 错误 找寻不到节目或节目找寻错误 连续计数错 马赛克PMT 间隔错误 找寻不到节目或节目找寻错误 PMT 加扰错误 找寻不到节目或节目找寻错误PID 错误 黑屏、静帧、马赛克等所有异常现象 传达错误黑屏、静帧和马赛克、画面不流畅现象二 CRC 错误黑屏、静帧和马赛克、画面不流畅现 级象错 PCR 间隔错误 视音频不相同步或图象颜色丧失 误PCR 非连续标志错 视音频不相同步或图象颜色丧失 PCR 抖动错误 视音频不相同步或图象颜色丧失 PTS 错误音视频不相同步TS 包加扰错 只对加扰节目有影响,为略微错误 CAT 错误无法正确办理 CA 信息,为略微错误NIT ID 错误 无异常现象,码流解析仪的三级错误 三NIT 间隔错误为略微错误。
级 NIT 其他错误错SI 重复率错误缓冲器错非指定 PID 错SDT ID 错SDT 当前间隔错SDT 其他间隔错 EIT ID 错EIT 当前间隔错 EIT 其他间隔错EIT PF 错 RST 错误TDT 错误空缓冲器错误数据延缓错误TR101-290: DVB系统测量标准TR101-290: DVB系统测量标准。
TR 101-290定义的三个优先级,是码流监测的一项主要内容。
经过这三个优先级的监测,能够检验被监测的码流可否吻合MPEG-2和DVB标准。
这三个优先级都包含好多不相同的参数。
PSI/SI: 数字电视业务信息,由 PSI 和 SI 两局部组成。
PSI 是 MPEG-2规定的,它由PAT 、 PMT 、CAT 和 NIT 4个表组成,其中PAT 、PMT 表最为重要。
[Excel中关于函数的具体介绍]pmt函数具体计算公式Excel是办公室自动化中非常重要的一款软件,很多巨型国际企业都是依靠Excel进行数据管理。
它不仅仅能够方便的处理表格和进行图形分析,其更强大的功能体现在对数据的自动处理和计算,今天,本文库就教大家在Excel中关于函数的具体介绍。
Excel中关于函数的具体介绍如下:然而很多缺少理工科背景或是对Excel强大数据处理功能不了解的人却难以进一步深入。
编者以为,对Excel函数应用的不了解正是阻挡普通用户完全掌握Excel的拦路虎,然而目前这一部份内容的教学文章却又很少见,[1]所以特别组织了这一个《Excel函数应用》系列,希望能够对Excel进阶者有所帮助。
《Excel函数应用》系列,将每周更新,逐步系统的介绍Excel各类函数及其应用。
Excel的数据处理功能在现有的文字处理软件中可以说是独占鳌头,几乎没有什么软件能够与它匹敌。
在您学会了Excel的基本操作后,是不是觉得自己一直局限在Excel的操作界面中,而对于Excel的函数功能却始终停留在求和、求平均值等简单的函数应用上呢?难道Excel只能做这些简单的工作吗?其实不然,函数作为Excel处理数据的一个最重要手段,功能是十分强大的,在生活和工作实践中可以有多种应用,您甚至可以用Excel来设计复杂的统计管理表格或者小型的数据库系统。
excel函数共500多个,但常见的不过是30多个,包括查找函数,截取函数,计数函数等等。
函数说明编辑Excel中所提的函数其实是一些预定义的公式,它们使用一些称为参数的特定数值按特定的顺序或结构进行计算。
用户可以直接用它们对某个区域内的数值进行一系列运算,如分析和处理日期值和时间值、确定贷款的支付额、确定单元格中的数据类型、计算平均值、排序显示和运算文本数据等等。
例如,SUM 函数对单元格或单元格区域进行加法运算。
Excel函数一共有11类,分别是数据库函数、日期与时间函数、工程函数、财务函数、信息函数、逻辑函数、查询和引用函数、数学和三角函数、统计函数、文本函数以及用户自定义函数。
摘要:这篇文章结合DVB-C的有线数字电视某个TS流中的PSI/SI信息表,具体分析了MPEG-2的PSI信息和DVB的SI信息中的各种表,从而更清晰地了解各个表的功能和作用。
<br />要害词:数字电视;TS流;P ...摘要:这篇文章结合DVB-C的有线数字电视某个TS流中的PSI/SI信息表,具体分析了MPEG-2的PSI信息和DVB的SI信息中的各种表,从而更清晰地了解各个表的功能和作用。
在数字电视中,所有视频、音频、文字、图片等经数字化处理后都变成了数据,并按照MPEG-2的标准打包,形成固定长度(188个字节)的传送包,然后将这些数据包进行复用,形成传送码流(TS)。
通常由多个节目及业务复用组成的1个TS(TransportStream传输流)流对应1个8MHz带宽的频道。
数字电视机顶盒中为了找到需要的码流,辨认不同的业务信息,在TS流中必须加入一些引导信息,为此,在MPEG-2中,专门定义了PSI(ProgramSpecificInformation)信息,其作用是从1个携带多个节目的某1个TS流中正确找到特别指定的节目。
在MPEG-2标准中定义的PSI表,是对纯一TS流的描述。
因为体系通常存在多个TS流,为了引导数字电视用户能在TS流中迅速地找出自己需要的业务,DVB对MPEG-2的PSI进行了扩充,在PSI四个表的基础上再增长了九个表,形成SI(ServiceInformation)。
SI是对整个体系所有TS流的描述,在符合MPEG-2(13818-1)的TS传输流中插入DVB标准定义的业务信息(ServiceInformation,SI),使机顶盒(Set-Top-Box)的综合接收解码器(IRD)可以从TS流中提掏出节目供给商播出节目的列表和播出参数,以直观的形式预示给数字电视用户,要得用户可以方便地接收、选择数字电视节目。
PSI表包孕节目联系关系表(PAT)、条件接收表(CAT)、节目映射表(PMT)和收集信息表(NIT)组成,这些表在复用时通过复用器插入到TS流中,并用特别指定的PID(包标识符)进行标识。
ts流解析原理TS流解析原理是指对TS(Transport Stream)流进行解析的过程,TS流是一种用于传输媒体数据的封装格式,常用于广播和卫星传输等领域。
TS流解析的主要步骤如下:1. TS包解析:TS流由一系列固定大小的TS包组成,每个TS包的大小为188字节。
TS包由头部和数据两部分组成,头部包含了一些基本的信息,如同步字节、计数器等。
解析器需要将每个TS包抽取出来,并解析其头部信息。
2. PID(Packet Identifier)解析:每个TS包中都包含一个PID字段,用于标识不同的数据包或流。
解析器需要根据PID字段的值将TS包中的数据分发到对应的处理模块。
3. PAT(Program Association Table)解析:PAT是TS流中的一个重要表格,用于指示包含在TS流中的其他表格的位置。
解析器首先需要解析出PAT表,获取到其他表格的PID值。
4. PMT(Program Map Table)解析:PMT表是TS流中的另一个重要表格,用于描述媒体流的相关信息,如音视频编码类型、PES(Packetized Elementary Stream)的PID等。
解析器需要根据PAT表获取到的PID值,解析出对应的PMT表。
5. PES解析:PES是TS流中常见的一种封装格式,用于封装音视频等媒体数据。
解析器需要根据PMT表中的PID值,解析出对应的PES数据。
6. 解码处理:解析器将解析出来的音视频等媒体数据交给相应的解码器进行解码,进一步处理和播放。
总的来说,TS流解析原理主要包括了对TS包、PID、PAT表、PMT表和PES数据的解析处理过程。
通过对TS流的解析,可以获取到媒体数据的相关信息,并进行进一步的处理和播放。
TS流也是由一个或多个PES组合而来的,他们可以具有相同的时间基准,也可以不同。
其基本的复用思想是,对具有相同时间基准[color="#000000"]的多个PES现进行节目复用,然后再对相互有独立时间基准的各个PS进行传输复用,最终产生出TS。
TS包由包头和包数据2部分组成,其中包头还可以包括扩展的自适用区。
包头长度占4bytes,自使用区和包数据共占184bytes,整个TS包长度相当于4个ATM包长。
TS包的包头由如下图摘录所示的同步字节、传输误码指示符、有效载荷单元起始指示符、传输优先、包识别(PID-Packet Identification)、传输加扰控制、自适应区控制和连续计数器8个部分组成。
其中,可用同步字节位串的自动相关特性,检测数据流中的包限制,建立包同步;传输误码指示符,是指有不能消除误码时,采用误码校正解码器可表示1bit 的误码,但无法校正;有效载荷单元起始指示符,表示该数据包是否存在确定的起始信息;传输优先,是给TS包分配优先权;PID值是由用户确定的,解码器根据PID将TS上从不同ES来的TS包区别出来,以重建原来的ES;传输加扰控制,可指示数据包内容是否加扰,但包头和自适应区永远不加扰;自适应区控制,用2 bit表示有否自适应区,即(01)表示有有用信息无自适应区,(10)表示无有用信息有自适应区,(11)表示有有用信息有自适应区,(00)无定义;连续计数器可对PID包传送顺序计数,据计数器读数,接收端可判断是否有包丢失及包传送顺序错误。
显然,包头对TS包具有同步、识别、检错及加密功能。
TS包自适应区由自适应区长、各种标志指示符、与插入标志有关的信息和填充数据4部分组成。
其中标志部分由间断指示符、随机存取指示符、ES优化指示符、PCR标志、接点标志、传输专用数据标志、原始PCR标志、自适应区扩展标志8个部分组成。
重要的是标志部分的PCR字段,可给编解码器的27MHz时钟提供同步资料,进行同步。
数字电视加扰CA原理分析及故障报告1、数字电视加扰CA系统(条件接受系统)的简要描述,当前付费数字电视频道实际上就是CA加密的频道,必须要经过广电BOSS授权才能解密,继而电视节目才可以正常的收看。
当前安吉数字电视都是采用机顶盒来接收,它利用射频信号线将MPEG2码流和EPG 信息接收下来,但是该mpeg2码流是已加扰信号,需要机顶盒智能卡利用密钥进行节目图像和音频的复原。
2、利用框图将CA的原理进行简要的分析名词解释:PDK(个人分配密钥)存在于智能卡,由永新同方提供的CA系统严格控制。
CAT表格和PMT表格都是存在于EPG列表中,分别对应条件接收表和节目映射表。
其中CAT表格中EMM(授权管理信息),它提供管理授权的信息,授权即为SK,为了避免该授权信息被未授权者获取,需要经PDK对其进行加密,就是PDK_SK。
ECM(授权控制信息),它存在于PMT表格中。
它控制授权的信息,它就是实现最终解扰生成控制字(CW)的关键,只有获取授权信息的用户才能解密出CW,就是SK_CW。
CW控制字,它由8个字节,每隔10m就会自动更换一次。
3、实例进行分析如上过程且解读为何从清流信号到加扰能够正常解读需要10s。
先看正常的加扰电视节目信号,截图中是以湖州新闻综合为例:湖州新闻综合,它的service ID 是101,所在的电视频点为411M。
上图显示,看到CAT表格中EMM(授权管理信息)它是存在于整个节目复用TS流中存在的。
它对整个TS流发挥作用。
后台显示它的CA_PID为48。
上图显示,在整个复用的TS流中,PMT表格中针对每个节目都会生成一个ECM信息,该节目(101)对应就是湖州新闻综合频道,它的ECM信息是CA_PID 为201。
针对湖州新闻综合频道,需要用户的授权,就是需要用户的智能卡里面包含有授权信息,才会对该电视节目解密,进而正常的收看。
相反若湖州新闻综合频道(101)改变为清流节目信号,就会变为如下图所示,看到CAT表格中EMM(授权管理信息),将会依然存在,为将来该节目的加扰和解扰提供必要的基础准备。
TS流的解析 TS即是"Transport Stream"的缩写。
他是分包发送的,每⼀个包长为188字节。
在TS流⾥可以填⼊很多类型的数据,如视频、⾳频、⾃定义信息等。
他的包的结构为,包头为4个字节,负载为184个字节(这184个字节不⼀定都是有效数据,有⼀些可能为填充数据)。
⼯作形式:因为在TS流⾥可以填⼊很多种东西,所以有必要有⼀种机制来确定怎么来标识这些数据。
制定TS流标准的机构就规定了⼀些数据结构来定义。
⽐如: PSI(Program Specific Information)表,所以解析起来就像这样: 先接收⼀个负载⾥为PAT的数据包,在整个数据包⾥找到⼀个PMT包的ID。
然后再接收⼀个含有PMT的数据包,在这个数据包⾥找到有关填⼊数据类型的ID。
之后就在接收到的TS包⾥找含有这个ID的负载内容,这个内容就是填⼊的信息。
根据填⼊的数据类型的ID的不同,在TS流复合多种信息是可⾏的。
关键就是找到标识的ID号。
现在以⼀个例⼦来说明具体的操作:在开始之前先给出⼀⽚实际TS流例⼦:0000f32ch: 47 40 00 17 00 00 B0 0D 00 01 C1 00 00 00 01 E0 ; G@....?..?...?0000f33ch: 20 A2 C3 29 41 FF FF FF FF FF FF FF FF FF FF FF ; ⒚)Aôôôôôôôôôôô0000f34ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ôôôôôôôôôôôôôôôô0000f35ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ôôôôôôôôôôôôôôôô0000f36ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ôôôôôôôôôôôôôôôô0000f37ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ôôôôôôôôôôôôôôôô0000f38ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ôôôôôôôôôôôôôôôô0000f39ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ôôôôôôôôôôôôôôôô0000f3ach: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ôôôôôôôôôôôôôôôô0000f3bch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ôôôôôôôôôôôôôôôô0000f3cch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ôôôôôôôôôôôôôôôô0000f3dch: FF FF FF FF FF FF FF FF FF FF FF FF 47 40 20 17 ; ôôôôôôôôôôôôG@ .0000f3ech: 00 02 B0 1B 00 01 C1 00 00 E0 21 F0 00 1B E0 21 ; ..?..?.??.?0000f3fch: F0 04 2A 02 7E 1F 03 E0 22 F0 00 5D 16 BD 48 ; ?*.~..??].紿具体的分析就以这个例⼦来分析。
MPEG组织于1994年推出MPEG-2压缩标准,以实现视/音频服务与应用互操作的可能性,MPEG-2标准是针对标准数字电视和高清晰度电视在各种应用下的压缩方案和系统层的详细规定。
对应于不同的应用,符合MPEG-2标准的码流又分为传送流和程序流,本文主要讲解了传送流有关的部分数据结构,从实际应用的传送流码流中截取了部分码流做了说明,并给出了部分解析传送流码流的实例程序。
在MPEG-II标准中,为了将一个或更多的音频、视频或其他的基本数据流合成单个或多个数据流,以适应于存储和传送,必须对其重新进行打包编码,在码流中还需插入各种时间标记、系统控制等信息,最后送到信道编码与调制器。
这样可以形成两种数据流——传送流(TS)和程序流(PS),分别适用于不同的应用,图1给出了单路节目的视音频数据流的复用框图。
传送流(Transport Stream)简称TS流,它是根据ITU-T Rec.H.222.0|ISO/IEC 13818-2 和ISO/IEC 13818-3协议而定义的一种数据流,其目的是为了在有可能发生严重错误的情况下进行一道或多道程序编码数据的传送和存储。
这种错误表现为比特值错误或分组丢失。
传送流由一道或多道节目组成,每道节目由一个或多个原始流和一些其他流复合在一起,包括视频流、音频流、节目特殊信息流(PSI)和其他数据包。
其中PSI表有4种类型:节目关联表(PAT)、节目映射表(PMT)、网络信息表和条件访问表。
传送流应用比较广泛,如视音频资料的保存、电视节目的非线性编辑系统及其网络等。
在开发机顶盒以及视频设备时有时需要对码流的编码知识有比较清楚地了解,这样才能在遇到问题时做出全面的分析。
TS流结构分析如图2所示,TS包的长度是固定的,为188字节。
包括同步字节(sync_byte)0x47和数据包识别号PID 等。
PID为13位字段,指示存储于分组有效负载中数据的类型,PID值0x0000为程序关联表保留,而0x0001为条件访问表保留,0x1FFF为空分组保留。
HLS, Http Live Streaming 是由Apple公司定义的用于实时流传输的协议, HLS基于HTTP协议实现, 传输内容涉及两部分, 一是M3U8描述文献, 二是TS媒体文献。
1.M3U8文献用文本方式对媒体文献进行描述, 由一系列标签组成。
#EXTM3U#EXT-X-TARGETDURATION:5#EXTINF:5,./0.ts#EXTINF:5,./1.ts#EXTM3U: 每个M3U8文献第一行必须是这个tag。
#EXT-X-TARGETDURATION: 指定最大的媒体段时间长度(秒), #EXTINF中指定的时间长度必须小于或等于这个最大值。
该值只能出现一次。
#EXTINF:描述单个媒体文献的长度。
后面为媒体文献, 如./0.ts2.ts文献ts文献为传输流文献, 视频编码重要格式h264/mpeg4, 音频为acc/MP3。
ts文献分为三层:ts层Transport Stream、pes层 Packet Elemental Stream、es层 Elementary Stream.es层就是音视频数据,pes层是在音视频数据上加了时间戳等对数据帧的说明信息,ts层就是在pes层加入数据流的辨认和传输必须的信息注: 详解如下(1)ts层 ts包大小固定为188字节, ts层分为三个部分:ts header、adaptation field、payload。
ts header固定4个字节;adaptation field也许存在也也许不存在, 重要作用是给局限性188字节的数据做填充;payload是pes数据。
ts headersync_byte 8b同步字节, 固定为0x47transport_error_indicator 1b 传输错误指示符, 表白在ts头的adapt域后由一个无用字节, 通常都为0, 这个字节算在adapt域长度内payload_unit_start_indicator 1b 负载单元起始标示符, 一个完整的数据包开始时标记为1• ts层的内容是通过PID值来标记的, 重要内容涉及: PAT表、PMT表、音频流、视频流。
MPEG-2 TS码流分析一、TS流概述ES流(Elementary Stream,基本流):数字电视各组成部分编码后所形成的直接表示基本元素内容的流,包含视频、音频或数据的连续码流。
PES流(Paketized Elementary Stream,打包基本码流):是将基本的码流ES流根据需要分成长度不等的数据包,并加上包头就形成了打包的基本码流PES流。
PS (Program Stream,节目流):将一个节目的多个组成部分按照它们之间的互相关系进行组织并加入各组成部分关系描述后的码流。
PS流是一种多路复用数字音频、视频等的封装容器,它一个或多个具有共同的时间基准的PES流合并成一个整体流,主要用于节目存储。
其包长不固定,且较长,一旦失去同步信息,接收机无法确定下一包的同步位置,会造成失步,导致严重的信息丢失。
PS流适用于误码小、信道较好的环境,如演播室、家庭环境和存储介质中。
TS流(Transport Stream,传输流):是将一个节目的多个组成部分按照它们之间的互相关系进行组织并加入各组成部分关系描述和节目组成信息,并进一步封装成传输包后的码流。
TS流是将视频、音频、PSI等数据打包成传输包进行传送。
主要用于节目传输。
TS的传输包长度固定,一般为188字节。
TS流和PS流是MPEG-2标准中规定的两种输出码流。
TS格式中,从视频流的任意一片断开始都可以独立解码,而PS格式不可以。
由于TS流具备较强的抵抗传输误码的能力,因此目前在传输媒体中进行传输的MPEG-2码流基本上都采用了TS 流的包格式。
TS流的播放:播放前将TS流文件的后缀名该为.mpg或者.mpeg,用可以直接播放MPEG-TS流的播放器(一般的播放器都可以)打开播放即可。
TS流的优点:1、动态带宽分配:由于TS的传输包长度是固定的,因此可过PID可以将规定的信道总频带在视频、音频和数据信息见进行实时的、灵活的分配。
利用这一特性,可在广播付费节目前实时地将解密钥匙插入到TS流中送给广大用户。
传送流(TS)的基础知识数字电视的TS包和TS流的组成和功能综合考虑⼏下⼏个因素:(1)包的长度不能过短,否则包头开销所占⽐例过⼤,导致传输效率下降(2)包的长度不能过长,否则在丢失同步的情况下恢复同步的周期过长,导致较多的信息丢失(3)其他环境相适配,如纠错编码,宽带⽹等。
TS包按功能分为链接头,适配域,净荷。
链接头的长度固定,4个字节适配域的长度从0字节到184字节可变,可以没有,也可以扩展到整个TS包净荷数据的长度从0字节到184字节可变。
整个TS流是由许多长度为188字节的TS包周期性的排列⽽形成的。
ts包头包含4个字节的内容,主要负责TS包的同步、各种ES流的表⽰、TS包传输差错的检测和条件接收等功能。
(1)包同步(syn_bate)是包中的第⼀个字节,TS包以固定的8bit的同步字节开始,所有的TS传送包,同步字都是唯⼀的OX47,⽤于建⽴发送端和接收端包的同步。
(2)包差错指⽰(transport_error_indicator)⽤于从解码器向分接器指⽰传输误码。
若这个⽐特被设置,表⽰此TS包中所携带的净荷信息有错误,⽆法使⽤。
(3)净荷单元起始指⽰(payload_uint_start_indicator)标志PES包头以及包含节⽬特定信息的表(PMT,PAT)的头是否出现在该包中,在失步后的重新同步中起着重要的作⽤。
(4)传送优先级(transport_priority)⽤于表⽰包中含有重要数据,应予以优先传送。
(6)加扰控制(transport_scrambling_control)传送信息通过加⼊扰码来加密,各个基本码流可以独⽴进⾏加扰。
加扰控制字段说明TS包中的净荷数据是否加扰。
如果加扰,标志出解扰的密匙。
(5)包标识符PID(pid)PID是识别TS包的重要参数,⽤来识别TS包所承载的数据。
在TS码流⽣成时,每⼀类业务(视频,⾳频,数据)的基本码流均被赋予⼀个不同的识别号PID,解码器借助于PID判断某⼀个TS包属于哪⼀类业务的基本码流。
TS流分析图一MPEG-2定义了一些用来描述传输流所携带内容的信息表,称为节目特定信息(PSI)表,包括4个与之相关的表。
其中,节目关联表PAT和节目映射表PMT是确定当前传输流中各节目内容的最关键的两个表。
在接收到TS流时我们首先找到PA T表,因为只有找到PAT表才能确定PMT表才能知道哪些是我们要播放的音频数据和视频数据在开始之前先给出一片实际TS流例子:0000f32ch: 47 40 00 170000 B0 0D 00 01 C1 00 00 00 01 E0 ; G@....?..?...?0000f33ch: 20 A2 C3 29 41 FF FF FF FF FF FF FF FF FF FF FF ; ⒚)A0000f34ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; 0000f35ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; 0000f36ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; 0000f37ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; 0000f38ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; 0000f39ch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; 0000f3ach: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; 0000f3bch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ;0000f3cch: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; 0000f3dch: FF FF FF FF FF FF FF FF FF FF FF FF 47 40 20 17 ; G@ .0000f3ech: 00 02 B0 1B 00 01 C1 00 00 E0 21 F0 00 1B E0 21 ; ..?..?.??.?0000f3fch: F0 04 2A 02 7E 1F 03 E0 22 F0 00 5D 16 BD 48 ; ?*.~..??].紿1Ts流包的机构是固定的,每个包长188字节,并且头部是不固定的(一般为4字节),负载部分为,188字节减去头部长度。
1.概述Subtitle 模块将媒体流中的字幕流数据解码成可显示的字幕,是一种简便而直观的信息提供途径,其重要性主要体现在两个方面。
一是字幕可以为听力有障碍的人提供另一个"语音"信息途径;二是字幕功能可以通过简单的后期制作(如多语言显示),配合电视节目的全球化推广提供便捷的平台。
DVB作为全球应用最广泛的数字电视传输标准,也为多种语言的字幕提供了相应的规范,从而使字幕成为不同国家和地区电视节目交流的良好载体。
1.1 DVB subtitle的组织DVB Subtitle 字幕被定义成一路单独的ES 流,复用在TS 流中,通过解析PMT 表可得到字幕流的PID 信息。
在PMT 表中,描述DVB 字幕流类型为0x06,数据属性包括:字幕PID、页ID(composition-page_id)、辅助页ID(ancilliarypage_id)、语言编码等信息,这些描述信息在PMT 表中的两种格式如图1.1 所示:1.单PID,根据页ID 来区分不同字幕。
composition-page_id 表示一路字幕信息,如节目1,同一个PID 的字幕流下有两路不同语言的字幕。
2. 多PID,每个字幕使用独立的PID。
此时每一个PID 的字幕流只承载一路字幕,如节目2,有多少路字幕就需要多少个PES 流来传输。
图1.1 DVB Subtitle 在PMT 表中的描述2.重要概念1:页分段(page composition)。
通过页id(page_id)定义了该页显示终止时间、页的状态、该页中区域数、各区域号、各区域的水平及垂直位置。
2:区域分段(region composition)。
用于定义该区域的宽高、水平垂直位置、所使用的CLUT 表的CLUT_id值、对象的id、区域背景色以及像素深度等信息。
3:CLUT分段(CLUT definition)。
用于定义颜色,以便把传输的虚颜色转换成实际色板中的颜色。
TS协议解析范文TS协议(Transport Stream Protocol)是一种用于传输音频、视频和数据的通信协议。
它是MPEG(Moving Picture Experts Group)组织制定的一种传输标准,广泛用于数字广播和数字电视等领域。
TS协议主要通过分组方式将音视频数据进行打包、传输和解析,下面将对TS协议的解析进行详细介绍。
一、TS协议概述TS协议是一种基于分组传输的协议,它将音视频数据进行分组打包,每个分组的大小为188字节。
每个分组都包含了一个称为PacketIdentifier(PID)的标识符,用于标识不同的流。
TS协议可以同时传输多个音视频流和数据流,每个流对应一个唯一的PID。
其中,音频流和视频流采用连续的PID进行标识,数据流则可以采用任意的PID。
TS协议还支持通过PAT(Program Association Table)和PMT(Program Map Table)来描述和管理不同的音视频流。
二、TS协议分组结构TS协议的分组结构非常重要,它决定了数据的组织方式和传输方式。
每个TS分组由4字节的同步字节开始,之后是连续的184字节的有效数据和4字节的错误检测码(CRC32)。
TS分组的有效数据包括了多个TS数据包。
TS数据包由4字节的同步字节和184字节的有效负载组成。
同步字节用于标识分组的开始,有效负载则包含了音视频数据和控制信息。
三、TS协议的传输和解析TS协议的传输过程分为打包、传输和解析三个步骤。
首先,音视频数据被打包成TS分组的形式。
在打包过程中,音频和视频流被分别编码和打包,并通过不同的PID进行标识。
每个分组的PID决定了数据的类型和对应的解析方式。
然后,打包后的TS分组通过传输媒介进行传输。
常用的传输媒介包括卫星、有线和无线网络等。
TS分组通过传输媒介被传输到接收端,并进行解析。
最后,接收端根据TS分组的PID进行解析。
首先,接收端解析PAT 表,获取各个音视频流的PID。
excel 文件中 pmt公式(最新版)目录1.PMT 公式的定义和用途2.PMT 公式的语法和参数3.PMT 公式的运算原理4.PMT 公式在 Excel 中的应用示例5.PMT 公式的优点和局限性正文【1.PMT 公式的定义和用途】PMT(Payment)公式是 Excel 中用于计算贷款或投资等金融问题的一种公式。
PMT 公式可以计算在指定的期数内,每期所需支付的金额,包括本金和利息。
在财务管理、投资分析和贷款计算等领域中,PMT 公式具有广泛的应用。
【2.PMT 公式的语法和参数】PMT 公式的语法如下:`=PMT(rate, nper, pv)`其中:- rate:表示每期利率,必须是一个百分比数值,例如:5% 表示 0.05 - nper:表示贷款或投资的期数,必须是一个正整数- pv:表示贷款或投资的现值,即贷款本金或投资金额,可以是负数【3.PMT 公式的运算原理】PMT 公式的运算原理基于金融学中的等额本息还款法。
等额本息还款法是指贷款人在每个还款周期内,按照相同的金额偿还贷款本金和利息。
PMT 公式通过将贷款或投资的现值、每期利率和期数代入公式,计算出每个周期应支付的金额。
【4.PMT 公式在 Excel 中的应用示例】假设某人向银行贷款 10 万元,年利率为 5%,贷款期限为 3 年,每年 12 期。
我们可以使用 PMT 公式计算每期应还款的金额。
在 Excel 中输入以下公式:`=PMT(5%, 3*12, -100000)`计算结果为:每期应还款金额约为 2780 元。
【5.PMT 公式的优点和局限性】PMT 公式的优点在于它可以方便地计算贷款或投资中的每期还款金额,便于财务管理和投资分析。
然而,PMT 公式仅适用于等额本息还款法,对于其他还款方式,如等额本金还款法,需要通过其他方法进行计算。
解析TS流PAT和PMT代码#include#include#include#define ts_path "/home/huohuo/huangwork/work/birds.ts" //TS⽂件的绝对路径void Read_Ts_Packet(FILE *file_handle,unsigned char *packet_buf,int len); //读⼀个TS流的packetint parse_TS(unsigned char *buffer,int FileSize); //分析TS流,并找出PA T的PID和PAT的tablevoid parse_PAT(unsigned char *buffer,int len); //分析PA T,并找出所含频道的数⽬和PMT的PIDvoid pronum_pmtid_printf(); //打印PMT的PID unsigned char* Find_PMT(unsigned short pmt_pid); //找出PMT的table void parse_PMT(unsigned char *buffer,int len,unsigned short pmt_pid); //解析PMT,找出其中的Video和Audio的PID void printf_program_list(); //打印PMT table中包含的stream的类型和PIDunsigned char* Find_video_audio(unsigned short program_pid,unsigned char type); //找出Video或者Audio的table typedef struct{unsigned short program_num; //program's numunsigned short pmt_pid; //}PROGRAM;typedef struct{unsigned char stream_type;unsigned short elementary_pid;}PRO_LIST;PROGRAM programs[10] = {{0,0}}; //⽤来存储PMT的PID和数量unsigned int num = 0; //total programPRO_LIST program_list[10] = {{0,0}}; //⽤来存储PMT中stream的类型和PIDunsigned int program_list_num = 0;FILE *file_handle; //指向TS流的指针unsigned int FileSize = 0;int main(){unsigned char buffer[188] = {0};unsigned char *pmt_buffer, *Video_or_Audio_buffer;unsigned int i=0,j=0,ret=0;pmt_buffer = (unsigned char*)malloc(sizeof(char)*188); //给buffer分配空间Video_or_Audio_buffer = (unsigned char*)malloc(sizeof(char)*188);memset(Video_or_Audio_buffer,0,sizeof(char)*188);file_handle = fopen(ts_path,"rb+"); //以⼆进制⽅式打开TS⽂件if(NULL == file_handle) //判断是否打开⽂件{perror("fopen");printf("open file error!\n");return 0;}elseprintf("open file success!\n");fseek(file_handle,0,SEEK_END); //指针file_handle将以SEEK_END位置偏移0个位置,即将指针移动到⽂件尾FileSize = ftell(file_handle); // 计算file_handle到⽂件头的偏移字节数,即计算⽂件的⼤⼩printf("file size = %d\n",FileSize);rewind(file_handle); // equivalent (void) feek(file_handle,0L,SEEK_SET) 将file_handle 指针移动到⽂件头位置printf("find PAT begin-------->\n");for(i=0;i{Read_Ts_Packet(file_handle,buffer,188); //读TS的packet函数,每次读188个字节到bufferret = parse_TS(buffer,188); //解析188个字节的TS's packet,并打印找到的PA T’s table。
介绍DVB-S码流,PAT,PMT,NIT,CAT摘要本文介绍了电子节目指南信息的构成以及MPEG-2 PSI和DVB-SI信息规范,提出了一种EPG信息的存储结构和节目数据库的生成方案,并据此讲述了如何在数字有线电视机顶盒中生成电子节目指南EPG。
关键词机顶盒 MPEG-2 PSI节目专用信息 DVB-SI业务信息电子节目指南1 引言目前数字电视已经进入快速发展阶段,与数字电视相关的业务也将大幅度增长。
当节目运营商将大量的节目信息通过有线网络提供给用户,用户在欣赏高质量节目源的同时如何才能方便快捷地找到这些业务或信息就成了开发者们需要解决的一个关键问题。
电子节目指南(EPG,Electronic Program Guide)正是为了方便用户对信息的获取而制作的运行于用户端综合接收解码器(IRD,Integrated Receiver Decoder)的应用程序,它通过电视屏幕向用户提供由文字、图形、图像组成的人机交互界面,负责电视节目和各种业务的导航[1]。
用户通过电子节目指南,能够了解到节目的相关信息(包括节目时间、播放时间、内容梗概等),并且实现对节目的快速检索和访问。
EPG的形成依赖于节目播出前端将符合DVB(Digital Video Broadcasting)标准的业务信息(SI,Service Information)插入到承载节目信息的传送流(TS,Transport Stream)中,这些SI信息携带了EPG所需的全部数据。
2 电子节目指南信息的组成和传输电子节目指南信息(以下简称EPG信息)由两部分组成:基本EPG信息和扩展EPG信息。
基本EPG信息是指完全可以用《数字广播业务信息规范(GY/Z174-2001)》中的网络信息表NIT、业务群关联表BAT、业务描述表SDT、事件信息表EIT等进行描述的EPG信息。
扩展EPG信息是指在基本EPG信息之外,通过数据轮播传递的EPG信息,这些信息的入口采用EPG映射表EMT进行描述,信息的内容被封装成具有多级目录结构的文件系统,称为扩展EPG内容信息(XECI)。
更具体准确的信息请参考iso13818-1,都在里面定义的PAT的定义:Table_id:为8bit字段,该字段标识节目关联分段,对于PAT,置为0x00。
Section_syntax_indicator:1bit字段,对于PAT,置为0x01。
Reserved:2bit保留字段,用于将来扩展,置为11。
Section_length:12bit字段,指示当前section的长度,计数值从分段长度下一个字节开始,包括CRC校验的4个字节,开头两位置为00,因此其大小不超过1021。
Transport_stream_id:16bit字段,当前TS流的ID,与网络中其他TS流相区别,由运营商指定。
Reserved:2bit保留字段,用于将来扩展,置为11。
Version_number:5bit字段,指出PAT表的版本号,一旦PAT表有变化,其版本号增1,当增至31时,恢复至0。
Current_next_indicator:1bit,置为1时,表示传送的PAT当前有效,置为0表示PAT下一次有效。
Section_number:8bit字段,表示section的数目,从0x00开始。
Last_section_number:8bit字段,指出最后一个section号,即PAT表section的最大数目。
Program_number:16bit字段,指出了节目对于哪一个PMTPID是可用的,当为0x00时,后面的PID对应于NIT。
Reserved:3bit保留字段,用于将来扩展,置为111。
Network_id:13bit字段,NIT PID。
Program_map_PID:13bit字段,对应于program_number所指定的节目的program_map_section的PID,从上面可看出:一个program用4字节来表示(包括16bit的program_number与13bit的PID)。
CRC:用来证实数据正确性的循环冗余校验码。
TS流解析之PMT表格解析2010-12-14 08:44TS流解析之PMT表格解析PMT结构定义:typedef struct TS_PMT_Stream{unsigned stream_type : 8; //指示特定PID的节目元素包的类型。
该处PID由elementary PID指定unsigned elementary_PID : 13; //该域指示TS包的PID 值。
这些TS包含有相关的节目元素unsigned ES_info_length : 12; //前两位bit为00。
该域指示跟随其后的描述相关节目元素的byte数unsigned descriptor;}TS_PMT_Stream;//PMT 表结构体typedef struct TS_PMT{unsigned table_id : 8; //固定为0x02, 表示PMT表unsigned section_syntax_indicator : 1; //固定为0x01unsigned zero : 1; //0x01unsigned reserved_1 : 2; //0x03unsigned section_length : 12;//首先两位bit置为00,它指示段的byte数,由段长度域开始,包含CRC。
unsigned program_number : 16;// 指出该节目对应于可应用的Program map PIDunsigned reserved_2 : 2; //0x03unsigned version_number : 5; //指出TS流中Program map section的版本号unsigned current_next_indicator : 1; //当该位置1时,当前传送的Program map section可用;//当该位置0时,指示当前传送的Program map section不可用,下一个TS 流的Program map section有效。
TS流解析之PMT表格解析2010-12-14 08:44TS流解析之PMT表格解析PMT结构定义:typedef struct TS_PMT_Stream{unsigned stream_type : 8; //指示特定PID的节目元素包的类型。
该处PID由elementary PID指定unsigned elementary_PID : 13; //该域指示TS包的PID 值。
这些TS包含有相关的节目元素unsigned ES_info_length : 12; //前两位bit为00。
该域指示跟随其后的描述相关节目元素的byte数unsigned descriptor;}TS_PMT_Stream;//PMT 表结构体typedef struct TS_PMT{unsigned table_id : 8; //固定为0x02, 表示PMT表unsigned section_syntax_indicator : 1; //固定为0x01unsigned zero : 1; //0x01unsigned reserved_1 : 2; //0x03unsigned section_length : 12;//首先两位bit置为00,它指示段的byte数,由段长度域开始,包含CRC。
unsigned program_number : 16;// 指出该节目对应于可应用的Program map PIDunsigned reserved_2 : 2; //0x03unsigned version_number : 5; //指出TS流中Program map section的版本号unsigned current_next_indicator : 1; //当该位置1时,当前传送的Program map section可用;//当该位置0时,指示当前传送的Program map section不可用,下一个TS 流的Program map section有效。
unsigned section_number : 8; //固定为0x00unsigned last_section_number : 8; //固定为0x00unsigned reserved_3 : 3; //0x07unsigned PCR_PID : 13; //指明TS包的PID值,该TS包含有PCR域,//该PCR值对应于由节目号指定的对应节目。
//如果对于私有数据流的节目定义与PCR无关,这个域的值将为0x1FFF。
unsigned reserved_4 : 4; //预留为0x0Funsigned program_info_length : 12; //前两位bit为00。
该域指出跟随其后对节目信息的描述的byte数。
std::vector<TS_PMT_Stream> PMT_Stream; //每个元素包含8位, 指示特定PID的节目元素包的类型。
该处PID由elementary PID指定unsigned reserved_5 : 3; //0x07unsigned reserved_6 : 4; //0x0Funsigned CRC_32 : 32;} TS_PMT;解析代码为:HRESULT CTS_Stream_Parse::adjust_PMT_table ( TS_PMT * packet, unsigned char * buffer ){packet->table_id = buffer[0];packet->section_syntax_indicator = buffer[1] >> 7;packet->zero = buffer[1] >> 6 &0x01;packet->reserved_1 = buffer[1] >> 4 & 0x03;packet->section_length = (buffer[1] & 0x0F) << 8 | buffer[2];packet->program_number = buffer[3] << 8 | buffer[4];packet->reserved_2 = buffer[5] >> 6; packet->version_number = buffer[5] >> 1 & 0x1F;packet->current_next_indicator = (buffer[5] << 7) >> 7;packet->section_number = buffer[6];packet->last_section_number = buffer[7];packet->reserved_3 = buffer[8] >> 5; packet->PCR_PID = ((buffer[8] << 8) | buffer[9]) & 0x1FFF;PCRID = packet->PCR_PID;packet->reserved_4 = buffer[10] >> 4; packet->program_info_length = (buffer[10] &0x0F) << 8 | buffer[11];// Get CRC_32int len = 0;len = packet->section_length + 3;packet->CRC_32 = (buffer[len-4] & 0x000000FF) << 24 | (buffer[len-3] & 0x000000FF) << 16| (buffer[len-2] & 0x000000FF) << 8| (buffer[len-1] & 0x000000FF);int pos = 12;// program info descriptorif ( packet->program_info_length != 0 )pos += packet->program_info_length;// Get stream type and PIDfor ( ; pos <= (packet->section_length + 2 ) - 4; ){TS_PMT_Stream pmt_stream;pmt_stream.stream_type = buffer[pos];packet->reserved_5 = buffer[pos+1] >> 5;pmt_stream.elementary_PID = ((buffer[pos+1] << 8) | buffer[pos+2]) & 0x1FFF;packet->reserved_6 = buffer[pos+3] >> 4;pmt_stream.ES_info_length = (buffer[pos+3] & 0x0F) << 8 |buffer[pos+4];pmt_stream.descriptor = 0x00;if (pmt_stream.ES_info_length != 0){pmt_stream.descriptor = buffer[pos + 5];for( int len = 2; len <= pmt_stream.ES_info_length; len ++ ){pmt_stream.descriptor = pmt_stream.descriptor<< 8 | buffer[pos + 4 + len];}pos += pmt_stream.ES_info_length;}pos += 5;packet->PMT_Stream.push_back( pmt_stream );TS_Stream_type.push_back( pmt_stream );}return 0;}举例如下:0x47 0x43 0xe8 0x12 0x00 0x02 0xb0 0x12 0x00 0x01 0xc1 0x00 0x00 0xe3 0xe9 0xf0 0x00 0x1b 0xe3 0xe9 0xf0 0x00 0xf0 0xaf 0xb4 0x4f 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xffTS头部sync_byte :0x47transport_error_indicator: 0x00payload_unit_start_indicator: 0x01transport_priority : 0x00PID :0x03e8transport_scrambling_control :0x00adaptation_field_control :0x01continuity_counter :0x02PMT数据table_id :0x02 // 8section_syntax_indicator :0x01 // 1'0' :0x00 // 1reserved :0x03 // 2section_length : 0x012 // 12program_number :0x00 01 // 16reserved :0x03 // 2version_number :0x00 // 5current_next_indicator 0x01 // 1section_number :0x00 // 8last_section_number :0x00 // 8reserved 0x07 // 3PCR_PID :0x03 e9 // PCR(节目参考时钟)所在TS分组的PID // 13reserved :0x0f //4program_info_length :0x000 // 12stream_type :0x1b // 8reserved 0x07 // 3elementary_PID :0x03 e9 // 13//该节目中包括的视频流,音频流等对应的TS分组的PIDreserved :0x0f // 4ES_info_length :0x000 // 12CRC : 0xf0 af b4 4f。