ts流解析规则

合集下载

[ts码流分析]ETSITR101290监测三种级别错误

[ts码流分析]ETSITR101290监测三种级别错误

[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 表最为重要。

11 地面数字电视单频网同步机制

11  地面数字电视单频网同步机制

地面数字电视单频网同步机制
单频网组网方式(以三站为例):
节目复用后的TS流通过单频网适配器,根据GPS提供的外部参考信号(10MHz时钟和1PPS秒脉冲)插入秒帧初始化包(SIP),SIP包含了延时、工作模式和发射参数等系统信息,用来保证各单频网台站在发射时间和发射频率上的同步。

此外,单频网适配器还完成码率适配功能,即单频网适配器输出的TS流码率和由单频网适配器规定的发射机工作模式要求的净载荷码率完全相同,并且锁定在来自GPS的10MHz参考时钟上。

单频网适配器输出的包含SIP的TS流,经节目分配网络透明传输到各单频网台站,保证送到各台站激励器的TS流在内容和时序上完全一致。

各单频网发射台站的激励器在接收到TS流后,根据解析SIP获得的系统信息来设置激励器的工作模式和发射参数,同时,根据解析SIP获得的“最大延时时间”参数,结合本地GPS提供的1PPS秒脉冲信号计算出“传输延时”,激励器“附加调整延时”:
“附加调整延时”=“最大延时时间”(包括激励器基带处理所需要的时间)-“传输延时”
在解析完SIP之后,激励器通常会将SIP修改为标准的TS流空包。

此外,为保证单频网各发射台站发射频率的同步,要求各发射台站激励器输出信号频率为同一频率并与GPS 信号的10MHz参考时钟严格锁定。

广播电视发射台建设光纤信号源系统解析

广播电视发射台建设光纤信号源系统解析

异步串行接口ASI ( Asynchr onous Se r i a l I nt er face) 是
城郊区域,仅需提供音频广播节目信号源即可。
DVB—C系统设备常用的一种MPEG一2 TS码流传输接口标
原先各发射台的信号源主要有两种:卫星DVB数字节 准,传输码率为固定的270Mbps ,通过插入同步字的方法以
码出的视频画面出现马赛克甚至黑屏,音频节目声音异常:
E1是欧洲的30路脉码调制PCM的简称,传输码率是
高山发射台的户外卫星接收天 线的高频头 在强雷电天 气也 2.048Mbps ( 简称2Mbps ) ,为我国所采用。
会受雷击而损坏,导致卫星信号源暂时失效。微波传输链路
DS3是准同步数字体系中三次群格式,传输码率为
上若发生雨雪雾等恶劣天气,则会干扰在其覆盖区域传输的 44.736Mbps ( 简称45Mbps ) ,是传送高速 数据流的数字广域
微波信号,造成接收端收到的信号误码率大幅提升,严重的 网通信标准,广泛应用于骨干通信网络。
可能导致微波信号传输的短暂中断。I l l
SDH的 复用结 构是 由一 些基本 复用 单元组 成的 有若 干
广播电视发射台建设光纤信号源系统解析
高壶 ( 福建省广播电视传输发射中心福建福州350001)
摘要:广播电视信号数字化处理及传输技术经过多 帧结构中进行传输的过程。数字传输网络中不同传输码率的
年的发展已相当成熟,而随着光纤网络建设的发展,广播电 信道接口采用了不同的帧结构,并相应地采用了不同的编码
视DVB数字信号通过光纤进入基层广播电视发射台成为优 方式。
即使是雷雨天气也不会因雷击而损坏光收发设备。
复用入VC一4虚容器,进而形成s TM—N信号。以我国DVB

解析TS流PAT和PMT 代码

解析TS流PAT和PMT 代码

#include<stdio.h>#include<stdlib.h>#include<string.h>#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的tablevoid parse_PMT(unsigned char *buffer,int len,unsigned short pmt_pid); //解析PMT,找出其中的Video和Audio的PIDvoid printf_program_list(); //打印PMT table中包含的stream的类型和PIDunsigned char* Find_video_audio(unsigned short program_pid,unsigned char type); //找出Video或者Audio的tabletypedef 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分配空间memset(pmt_buffer,0,sizeof(char)*188);//清空bufferVideo_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<FileSize/188;i++){Read_Ts_Packet(file_handle,buffer,188); //读TS的packet函数,每次读188个字节到bufferret = parse_TS(buffer,188); //解析188个字节的TS's packet,并打印找到的PA T’s table。

码流分析

码流分析

4. Title
TS基本结构
PSI/SI
三级错误
带宽码率
* Description of the contents
TS流分析的原理和方法
TS流结构:
1.根据ITU-T Rec.H.222.0|ISO/IEC 13818-2 和ISO/IEC 13818-3协 议而定义的一种数据流 2.由TS包经过时分复用组成,TS包总长度固定188字节。不足由填充 数据进行填充。
码流分析项目介绍
2012.11.28
www.themegallery.c
讲解流程
数字有线电视的基本概念 TS流介绍及其监测意义 TS流分析的原理和方法
TS流分析的产品调研
TS流监测项目探讨
数字有线电视的基本概念
DVB(digital video broadcast)
——数字电视传输标准
信源输入、信道编码和调制的一系列规范 我国的数字电视使用欧洲的DVB标准 数字电视主要使用的标准中还有美国的ATSC标准和日本的 ISDB标准。
TS流分析的原理和方法
TS包结构:
TS包结构:
1. 包头提供关于传输方面的信息:同步、有无差错、有无加扰等标志。 2. PCR的作用就是提供节目时钟参考,从而使解码器和编码器同步。 3. 有效载荷也叫净荷,实际就是PES包。
TS流分析的原理和方法
PSI:PAT、PMT、CAT SI:SDT、EIT、TD PCR
(1)同步丢失错误 (2)同步字节错误 (3)连续计数错误 (4)PID错误 (5)PAT错误 (6)PMT错误
TS流分析的原理和方法
二级错误: 错误形或PCR抖动量 PCR不连续发送时间一次超过10 ms; TS包头的传输包错误指示为“1”。 CRC用于计算PSI和SI是否错误。 相应的PID为0x0001的CAT;PID为 大于±500 ns。PCR抖动过大,会 PCR整个发送间隔超过40 ms。导致 表示包已损坏,影响TS码流的连续 PAT、PMT出现CRC错误,而且错误 PTS重复发送时间大于700ms。对帧 影响到解码时钟抖动甚至失锁。 以及信道稳定。 0x0001的包中发现非CAT表。CAT表 接收端时钟抖动或者漂移,影响画 持续出现,将影响解码器对某一套 图像正确显示产生影响。PTS只有 面显示时间。 节目的正确解码。 将指出授权管理信息EMM包的PID并 在TS未加扰时方能接收。 控制接收机的正确接收,CAT错误 则不能正确接收。

TS流解析源码

TS流解析源码
/* pat/pmt的尺寸不可能超过1024字节*/
if( 1024 < size || filter != m_sdt_filter )
return false;
/* CRC校验*/
crc32 = GetCrc32( buf, size-4 );
memcpy( &ival, buf+size-4, 4 );
}
m_pmtmap.RemoveAll();
/*清除SDT信息*/
position = m_sdtmap.GetFirst( &serv_id, &sdt );
while( position ) {
if( sdt.sdt_service_node ) {
TSSDTServiceInfo *serv_del, *serv_tmp = sdt.sdt_service_node;
if( !sdt_multilingual_des )
return false;
memset( sdt_multilingual_des, 0, sizeof(TSSDTMultilingualInfo) );
/*获取multilingual_name_descriptor */
memcpy( &sdt_multilingual_des->sdt_ISO_639_language_code, p, 4 );
if( !sdt_info )
return false;
/* descriptors: descriptor_tag(1)+descriptor_length(1)+... */
q = p;
while( p < q + len && p < buf + (size - 4) )

TS流分析软件EasyICE使用方法简介

TS流分析软件EasyICE使用方法简介作者:陈晓军来源:《卫星电视与宽带多媒体》2012年第09期TS流分析软件EasyICE使用方法简介笔者以深圳生产的DVBWorld 2102S USB多媒体数据接收盒为例向大家介绍详细使用过程,将接收盒硬件和软件全部安装好,然后依次点击“开始”→“所有程序”→“DVBWorld”→“TsCapture”项,打开TS流录制程序,如,点击“ LOCK”按钮可设置待录制TS流的下行频率、极化方式和符码率等参数,“Max File Size”是修改保存文件的大小,通过“Set Path”按钮设置好保存的文件名和位置(注意:保存文件的扩展名可以更改为TS,如图2),然后点击“Start Capture”便开始保存码流文件了,单击“Stop Capture”按钮可以停止录制。

接下来就是分析TS流文件的操作了。

通过菜单栏或工具栏打开一个 TS 文件或将文件拖动到 EasyICE内,可根据实际所需调协范围:整个文件或抽样分析,通常选择整个文件来分析,虽然多花点时间,但分析效果会更好。

当文件分析完毕后,软件主界面上会出现播放器、MediaInfo、PSI/SI、PID、图表和数据包四个选项标签,其中的播放器窗口会被初始化并处于暂停状态,单击播放按钮便开始播放节目(注:若TS流包含多路节目的话,则必须先在右上角选定某路节目才能播放),如图3所示。

播控按钮依次为:播放、暂停、停止、降低播放速度、加大播放速度及逐帧播放,播放速度的调整分七个级别:1/4 速、1/3 速、1/2 速、正常速度、2 倍速、3 倍速和四倍速。

当前播放速度会在“质量”区显示,“节目”区列出了当前流中所含有的节目,展开可以看到节目的视频、音频和PCR三个PID;“质量”区显示了当前播放媒体的简单信息,如播放速度等,不过由于软件问题有些数据获取不到或存在问题,请以“媒体信息”栏检测结果为准。

特别声名,软件首先会查找流中的 PSI/SI 信息,如果存在将按照 PSI/SI 信息解析,如果不存在软件将自己尝试检测视音频 PID 及 PCRPID,如果没有看到播放器画面,表明软件没有找到视频流或没有找到 PCR。

ts模块解析策略

ts模块解析策略
TS(Terminate and Stay)模块是Linux操作系统中的一个安全机制,用于在检测到严重的错误时,立即终止一个用户的会话,同时保持系统的其他部分正常运行。

TS模块的解析策略主要包括以下几个方面:
1. 信号捕获:TS模块通过捕获特定的信号(如SIGTERM或SIGKILL)来检测严重的错误。

当这些信号被发送给当前执行的进程时,TS模块会立即终止该进程,并启动一个灾难恢复过程。

2. 状态检查:在灾难恢复过程中,TS模块会检查系统的状态,以确定是否需要进一步的动作。

例如,如果检测到某个关键服务停止运行,TS模块可能会尝试重启该服务。

3. 会话管理:TS模块还会管理用户的会话。

当用户的会话被终止时,TS 模块会通知相关的服务,如认证服务和会话管理服务,以便它们可以正确处理这种情况。

4. 日志记录:TS模块会记录所有的活动,包括启动灾难恢复过程的时间、重启的服务、终止的会话等。

这些日志记录可以在系统出现问题时进行分析和调试。

总的来说,TS模块的解析策略旨在确保在检测到严重的错误时,能够立即采取行动,保护系统的其他部分正常运行。

MPEG-2TS码流编辑的原理及其应用

MPEG-2TS码流编辑的原理及其应用1. 简介MPEG-2TS(MPEG-2 Transport Stream)是一种应用于数字视频和音频传输的标准格式。

它被广泛应用于数字电视、高清视频广播、视频录制以及流媒体等领域。

MPEG-2TS码流编辑是对MPEG-2TS码流进行剪辑、合并、分离等操作的过程。

本文将介绍MPEG-2TS码流编辑的原理及其应用。

2. MPEG-2TS码流格式MPEG-2TS码流是由一系列的同步的MPEG-2TS包组成。

每个TS包的长度为188字节,其中包括4字节的头部、184字节的有效数据以及4字节的误码检测。

TS包可以携带视频、音频、字幕、导航信息等多种类型的数据。

通过解析TS包的头部信息,可以确定包中数据的类型及其位置。

3. MPEG-2TS码流编辑原理MPEG-2TS码流编辑的原理是通过对TS包进行增删改的操作来实现对码流的编辑。

常见的编辑操作包括剪辑、合并、分离等。

3.1 剪辑剪辑是指从原始的MPEG-2TS码流中选择需要的部分进行提取。

通过解析TS包的头部信息,可以确定需要的起始和结束位置,并将这些TS包提取出来,生成一个新的MPEG-2TS码流。

剪辑操作常用于视频广播中对广告等内容的剪辑。

3.2 合并合并是指将多个MPEG-2TS码流合并成一个新的码流。

通过解析每个TS包的头部信息,可以确定TS包的顺序和对应的PID(Packet Identifier),然后将不同码流的TS包按照顺序进行合并。

合并操作常用于视频编辑软件中对多个视频文件的合并。

3.3 分离分离是指将一个MPEG-2TS码流中的不同PID所对应的TS包分离出来。

通过解析每个TS包的头部信息,可以确定TS包所属的PID,然后将同一PID的TS包提取出来,生成一个新的码流。

分离操作常用于从视频录制设备中对视频、音频等进行分离。

4. MPEG-2TS码流编辑的应用MPEG-2TS码流编辑在多个领域中得到广泛应用。

高中物理流体模型解析

高中物理流体模型解析一、模型建构1、流体问题:"流体"一般是指液体流、气体流等,质量具有连续性。

涉及有求解质量、体积和力等问题。

2、两类问题第一类:连续流体类问题对于该类问题流体运动,可沿流速v的方向选取一段柱形流体作微元设在极短的时间Δt内通过某一横截面积为S的柱形流体的长度为Δl,如图所示。

设流体的密度为ρ则在Δt的时间内流过该截面的流体的质量Δm=ρSΔl=ρSvΔt根据动量定理得:FΔt=ΔmΔv分两种情况:(1)作用后流体微元停止,有Δv=-v,则F=-ρSv2(2)作用后流体微元以速率v反弹,有Δv=-2v,则F=-2ρSv2第二类:连续微粒类问题"微粒"一般是指电子流、尘埃等,质量具有独立性,通常给出单位体积内的粒子数n:(1)建立"柱状"模型,沿运动速度v0的方向选取一段微元,柱体的横截面积为S;(2)微元研究,作用时间△t内的一段柱体的长度为v0△t,对应的体积为△V=S v0△t,则微元内的粒子数N=nS v0△t(3)先应用动量定理研究单个粒子,建立方程,再乘以N计算。

二、例题精析例1、有一横截面积为S的铜导线,流经其中的电流为I,设每单位体积的导线有n个自由电子,电子的电荷量为q,此时电子的定向移动速率为v,在t时间内,通过导线横截面的自由电子数目可表示为()A.NstB.NvtC.D.解答:在t时间内通过导体横截面的自由电子的电量Q=It,则在t时间内,通过导体横截面的自由电子的数目为:N=,根据电流的微观表达式I=nqvS,将I=nevS代入得:N==nvSt故选:C。

例2、运动员在水上做飞行运动表演他操控喷射式悬浮飞行器将水带竖直送上来的水反转180°后向下喷出,令自己悬停在空中,如图所示。

已知运动员与装备的总质量为90kg,两个喷嘴的直径均为10cm,已知重力加速度大小g=10m/s2,水的密度ρ=1.0×103kg/m3,则喷嘴处喷水的速度大约为()A.2.7m/sB.5.4m/sC.7.6m/sD.10.8m/s解答:设飞行器对水的平均作用力为F,根据牛顿第三定律可知,水对飞行器的作用力的大小也等于F,对飞行器,则:F=Mg设水喷出时的速度为v,选取一段柱形流体在时间t内喷出的水的质量:△m=ρ•V=ρ•2Svtt时间内质量为△m的水获得的冲量:I=Ft=△mv联立可得:v===7.6m/s故选:C。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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 headerts层的内容是通过PID值来标识的,主要内容包括:PAT表、PMT表、音频流、视频流。

解析ts流要先找到PAT表,只要找到PAT就可以找到PMT,然后就可以找到音视频流了。

PAT表的PID值固定为0。

PAT表和PMT表需要定期插入ts流,因为用户随时可能加入ts流,这个间隔比较小,通常每隔几个视频帧就要加入PAT和PMT。

PAT和PMT表是必须的,还可以加入其它表如SDT(业务描述表)等,不过hls流只要有PAT和PMT就可以播放了。

∙PAT表:他主要的作用就是指明了PMT表的PID值。

∙∙PMT表:他主要的作用就是指明了音视频流的PID值。

∙∙音频流/视频流:承载音视频内容。

∙adaption自适应区的长度要包含传输错误指示符标识的一个字节。

pcr是节目时钟参考,pcr、dts、pts都是对同一个系统时钟的采样值,pcr是递增的,因此可以将其设置为dts值,音频数据不需要pcr。

如果没有字段,ipad是可以播放的,但vlc无法播放。

打包ts流时PAT和PMT表是没有adaptation field的,不够的长度直接补0xff即可。

视频流和音频流都需要加adaptation field,通常加在一个帧的第一个ts包和最后一个ts包里,中间的ts包不加。

PAT格式reserved 2b 固定为11version_number 5b 版本号,固定为00000,如果PAT有变化则版本号加1current_next_indicato r 1b固定为1,表示这个PAT表可以用,如果为0则要等待下一个PAT表section_number 8b 固定为0x00last_section_number 8b 固定为0x00开始循环program_number 16b节目号为0x0000时表示这是NIT,节目号为0x0001时,表示这是PMTreserved 3b 固定为111PID 13b 节目号对应内容的PID值结束循环CRC32 32b 前面数据的CRC32校验码PMT格式table_id 8b PMT表取值随意,0x02section_syntax_indicator1b 固定为1zero 1b 固定为0reserved 2b 固定为11section_length 12b 后面数据的长度program_number 16b 频道号码,表示当前的PMT关联到的频道,取值0x0001 reserved 2b 固定为11version_number 5b 版本号,固定为00000,如果PAT有变化则版本号加1 current_next_indicator1b 固定为1section_number 8b 固定为0x00last_section_number 8b 固定为0x00reserved 3b 固定为111PCR_PID 13b PCR(节目参考时钟)所在TS分组的PID,指定为视频PID reserved 4b 固定为1111program_info_length 12b 节目描述信息,指定为0x000表示没有开始循环stream_type 8b 流类型,标志是Video还是Audio还是其他数据,h.264编码对应0x1b,aac编码对应0x0f,mp3编码对应0x03reserved 3b 固定为111elementary_PID 13b 与stream_type对应的PID reserved 4b 固定为1111ES_info_length 12b 描述信息,指定为0x000表示没有结束循环CRC32 32b 前面数据的CRC32校验码pts是显示时间戳、dts是解码时间戳,视频数据两种时间戳都需要,音频数据的pts和dts相同,所以只需要pts。

有pts和dts两种时间戳是B帧引起的,I帧和P帧的pts等于dts。

如果一个视频没有B帧,则pts永远和dts相同。

从文件中顺序读取视频帧,取出的帧顺序和dts顺序相同。

dts算法比较简单,初始值 + 增量即可,pts计算比较复杂,需要在dts的基础上加偏移量。

音频的pes中只有pts(同dts),视频的I、P帧两种时间戳都要有,视频B帧只要pts(同dts)。

打包pts和dts就需要知道视频帧类型,但是通过容器格式我们是无法判断帧类型的,必须解析h.264内容才可以获取帧类型。

举例说明:I P B B B P读取顺序: 1 2 3 4 5 6dts顺序: 1 2 3 4 5 6pts顺序: 1 5 3 2 4 6点播视频dts算法:dts = 初始值 +90000 / video_frame_rate,初始值可以随便指定,但是最好不要取0,video_frame_rate就是帧率,比如23、30。

pts和dts是以timescale为单位的,1s = 90000 time scale , 一帧就应该是90000/video_frame_rate 个timescale。

用一帧的timescale除以采样频率就可以转换为一帧的播放时长点播音频dts算法:dts = 初始值 +(90000 * audio_samples_per_frame) / audio_sample_rate,audio_samples_per_frame这个值与编解码相关,aac取值1024,mp3取值1158,audio_sample_rate是采样率,比如24000、41000。

AAC一帧解码出来是每声道1024个sample,也就是说一帧的时长为1024/sample_rate秒。

所以每一帧时间戳依次0,1024/sample_rate,...,1024*n/sample_rate秒。

直播视频的dts和pts应该直接用直播数据流中的时间,不应该按公式计算。

(3)es层es层指的就是音视频数据,我们只介绍h.264视频和aac音频。

h.264视频:打包h.264数据我们必须给视频数据加上一个nalu(Network Abstraction Layer unit),nalu包括nalu header和nalu type,nalu header固定为0x00000001(帧开始)或0x000001(帧中)。

h.264的数据是由slice组成的,slice的内容包括:视频、sps、pps等。

nalu type决定了后面的h.264数据内容。

F 1b forbidden_zero_bit,h.264规定必须取0nal_ref_idc,取值0~3,指示这个nalu的重要性,I帧、sps、pps通常取3,NRI 2bP帧通常取2,B帧通常取0Type 5b 参考下表nal_unit_ty说明pe0 未使用红色字体显示的内容是最常用的,打包es层数据时pes头和es数据之间要加入一个type=9的nalu,关键帧slice前必须要加入type=7和type=8的nalu,而且是紧邻。

一、背景介绍之前我做了一个项目,要求写一个TS流解析的模块,因此看了ISOIEC 13818-1文档,外加很多人的博客来帮助理解,来了解TS流格式是个什么东西,收货颇多。

因此我觉得是时候发点干货回馈社会了。

二,TS流背景介绍在介绍具体字段,参数这些头疼,烦人的东西之前,我觉得有必要先介绍下TS流的应用背景,有了这个概念,再去深入学习,将如虎添翼。

T S流最经典的应用就是我们平时生活中的数字高清电视。

我们看的电视码流就是TS封装格式的码流,电视码流发送过来后,就会由我们的机顶盒进行解封装,解码,然后传给电视机进行播放。

这里就有一个问题,我们看电视,有很多的频道,节目,对应码流是怎么区分的呢?(TIPS,频道和节目的关系,比如我们有中央电视台综合频道,下属CCTV-1~CC TV14这些节目)TS流引入了PAT和PMT两张表格的概念来解决这个问题。

三,PAT和PMTTS流是以每188字节为一包,我们可以称为ts packet。

这个ts pack et有可能是音视频数据,也有可能是表格。

举例说明,TS流的包顺序为:PAT,PMT,DATA,DATA,,,,,,PAT,PMT,DATA,DATA,,,,,,每隔一段时间,发送一张PAT表,紧接着发送一张PMT表,接着发送D ATA(音视频)数据。

那么你可能要问了,有了这2张表格怎么区分频道,节目呢?PAT表格里面包含所有PMT表格的信息,一个PMT表格对应一个频道,比如中央电视台综合频道。

而一个PMT里面包含所有节目的信息,比如CCTV1~C CTV14。

在实际情况中我们是有很多频道的,所以PMT表格可不止一张,有可能是PAT,PMT,PMT,PMT,,,DATA,DATA,,,,PAT,PMT,P MT,,,DATA,DATA这样的形式。

除了这个设定外,每个频道或节目都有自己的标识符(PID),这样当我们拿到一个DATA,解析出里面的PI D,就知道是什么节目,并且也知道所属频道是什么了。

我们看电视的时候,会收到所有节目的DATA,当我们正在看某个节目的时候,机顶盒会把这个节目的DATA单独过滤出来,其它的舍弃。

相关文档
最新文档