b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

多媒体文件格式的TS

电脑杂谈  发布时间:2020-04-25 18:06:27  来源:网络整理

ts文件解析_ts文件字幕_ts文件音频

[时间: 2016-07] [状态: 打开]

TS流是在MPEG-2标准中为实时广播定义的流结构,具有良好的容错能力. 与TS相关的所有标准都可以在ISO / IEC_13818-1中找到.

TS流的后缀通常是.ts,.mpg或.mpeg. 大多数播放器直接支持这种格式.

主要回答以下问题:

该容器中的数据如何组织?容器包含哪些编码格式数据?该数据如何存储?容器包含哪些元数据信息?包含哪些计划信息?对于支持多个程序的容器格式ts文件音频,如何找到相应的音频流,视频流,字幕流?如何确定容器程序的持续时间?如何从容器中提取音频,视频和字幕数据并将其提供给进行解码,是否带有时间戳?是否寻求集装箱支撑?有什么辅助信息?是否支持直接流式传输?在哪里可以找到有关容器格式的最标准文档?哪些工具可用来帮助分析容器格式异常或错误?

TS流的形成过程:

1. 压缩原始音频和视频数据后,压缩结果形成基本流(ES).

2. 将ES(基本流)打包成PES.

3. 在PES数据包中添加时间戳信息(PTS / DTS).

4. 将PES数据包的内容分配为一系列固定长度的传输数据包(TS数据包).

5. 在传输包中添加定时信息(PCR).

6. 将程序特定信息(PSI)添加到传输包中.

7. 连续输出传输数据包以形成恒定比特率的MPEG-TS流.

TS流的分析过程可以说是生成过程的逆过程:

分析来自复用的MPEG-TS流的TS数据包;从TS分组中获取PAT和对应的PMT​​(PSI表);从而获得特定程序的音频和视频PID;通过PID相关TS包过滤出特定的音频和视频,并解析出PES;从PES读取PTS / DTS,并从PES解析出基本流ES;在压缩之前将ES提供给以获取原始音频和视频数据.

ts文件音频_ts文件解析_ts文件字幕

在MPEG-2中指定的TS传输包的长度是固定的,并且该长度是188个字节. 该标准规定,每个TS数据包只能包含一个基本流的数据,而没有交叉基本流.

所有TS数据包都分为报头和有效负载. TS包可以填充很多东西(填充到有效载荷部分中)ts文件音频,包括: 视频,音频,数据(包括PSI,SI和任何其他形式的数据). TS只是传输层的协议,因此对于错误处理有更多的错误纠正.

用c语言描述MPEG-TS代码流,如下所示:

MPEG_transport_stream() {
	do {
		transport_packet()
	} while (nextbits() == sync_byte)
}

以下图片是TS代码流的分层结构:

TS Syntax Diagram

TS数据包的报头提供有关传输的信息: 同步,错误存在,加扰,PCR(程序参考时钟)和其他符号. TS数据包报头的长度不是固定的,前32位(4个字节)是固定的,并且可以跟随适配字段(自适应字段). 32位(4字节)是最小的数据包头. 包头的结构固定如下:

TS Packet Definition

每个字段的含义如下:

PID值说明

PAT(节目关联表)

CAT(有条件访问表)

3-0xF

保留

0x10-0x1FFE

ts文件字幕_ts文件解析_ts文件音频

自定义PID,可用于PMT pid,网络pid或其他目标

0x1FFF

空包

请注意,PCR的PID可以是0、1或0x10-0x1FFE中的任何值.

对于adaptive_filed字段,请参阅标准文档的ch2.4.3.4 Adaptation字段部分.

TS数据包中有效负载传输的信息包括两种类型:

当然,TS数据包也可以是空数据包. 空数据包用于填充TS流,并且在再次执行多路复用时可以被插入或删除.

在对系统进行多路复用时,视频和音频ES流需要打包以形成视频和音频PES流,并且不需要将辅助数据(例如图文电视信息)打包到PES数据包中.

TS流中传输的表有四种主要类型,其中包含与理解多路复用和显示程序有关的信息.

节目信息的结构说明如下;

PMT定义与特定程序相关的PID信息,例如音频包pid,视频包pid和pcr pid; CAT表用于在流加扰的情况下配置参数. NIT是可选的,不包括在标准“详细定义”中; TSDT也是可选的.

这些表中的信息保存在TS中,需要将其分为几部分,然后放入TS包中.

这里仅是PAT和PMT表结构的详细说明,建议其他表参考标准文档.

PAT表将定期出现在TS流中. PAT表提供了程序号和与PMT表相对应的PID之间的对应关系.

具体结构如下:

ts文件解析_ts文件字幕_ts文件音频

PAT diagram

第一个字段table_id为8位,用于标识PSI部分有效载荷数据的类型. 其含义如下:

值说明

program_association_section

conditional_access_section(CA_section)

TS_program_map_section

TS_description_section

ISO_IEC_14496_scene_description_section

ISO_IEC_14496_object_descriptor_section

0x06-0x37

ITU-T建议书保留H.222.0 / ISO / IEC 13818-1

0x38-0x3F

在ISO / IEC 13818-6中定义

0x40-0xFE

私人用户

ts文件音频_ts文件解析_ts文件字幕

禁止

在PAT中定义的程序号(program_number)和PMT_PID的映射. 当程序号为0时,将存储network_PID.

有关详细定义,请参阅第2.4.4.3节“程序关联表”.

在传输流中使用

PMT来指示构成传输流中的一组程序的视频,音频和数据的位置,即对应的TS数据包的PID值和程序时钟每个程序位置的参考(PCR)字段.

结构定义如下:

PMT diagram

stream_type标识相应pid的类型,例如音频,视频或其他类型(有关具体建议,请参阅“传输流程序映射”部分中的2.4.4.9字段的语义定义).

PES数据包使用固定的24位起始码0x000001和8位流ID来描述当前数据包的类型. PES数据包可以包含时间戳信息,例如DTS / PTS. 总体结构如下:

PES packet syntax

PES数据包不是固定长度的,音频PES数据包小于或等于64K,视频通常是每帧一个PES数据包. 图像帧的PES数据包通常由许多TS数据包传输. 根据MPEG-2,必须通过整数个TS分组来发送PES分组. 如果最后一个携带PES数据包的TS数据包无法填充,则填充填充字节. 在形成下一个新的PES数据包时,需要使用一个新的TS数据包来开始传输.

PES软件包的结构如下:

PES_packet() {
	packet_start_code_prefix : 24
	stream_id : 8
	PES_packet_length: 16
	optional_pes_header
	pes_packet_data
}

对于最后两个字段的分析,建议参考标准文档中PES数据包中字段的语义定义2.4.3.7.

TS流是我接触到的第一种封装格式,要花很长时间才能完全了解特定的解码过程.

本文没有涉及太多细节. 显然,TS流不包含用于快速查找的机制,并且只能通过协议层来实现查找.

建议使用现有工具(例如TsAnalyse)来分析TS流. 对于广播中常用的TS流,还有更多现成的工具. 新的HLS协议也基于TS流实现.

ISO / IEC_13818-1MPEG-2 TS代码流分析


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/bofangqi/article-188609-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...