【科普】TS文件格式:什么是TS?如何打开,编辑和转换它?

概要
对于TS文件,相信很多人都对它很陌生,它并不像MP4格式那么流行。为了让大家进一步了解TS文件,本文将围绕TS文件格式,详细介绍它的来源、适用范围、打开方式以及如何编辑转换等。

什么是TS文件格式

TS(Transport Stream,传输流)是一种封装的格式,它的全称为MPEG2-TS。MPEG2-TS是一种标准数据容器格式,传输与存储音视频、节目与系统信息协议数据,主要应用于数字广播系统,譬如DVB、ATSC与IPTV。传输流最初是为广播而设计的。后来,通过在标准的188字节数据包中添加4字节的时间码(TC),从而使该数据包成为192字节的数据包,使其适用于数码摄像机,录像机和播放器。

【科普】TS文件格式:什么是TS?如何打开,编辑和转换它?_第1张图片

TipsMPEG2是一种多媒体传输、复用技术,在数字电视广播中可提供数百个节目频道。复用的含义是,可以同时传输多层节目。MPEG-2标准中,有两种不同的码流输出到信道,一种是节目码流(PS: Program Stream ,节目流),适用于没有传输误差的场景;一种是传送流(TS : Transport Stream ,传输流),适用于有信道噪声的传输场景。
节目码流是用于稳定可靠的媒体,如光盘(如DVD / CD),而传输流是用于不太稳定的传输,例如地面或卫星广播。此外,传输流可以传输多个节目。它们两者之间之间不具有层级关系。在逻辑上,其中它们都是都是PES(Packetized Elementary Stream,包基本流)包组成的,所以可以很方便地实现相互转换。

TS流是将视频、音频、PSI等数据打包成传输包进行传送,主要用于节目传输。

其优点有:
● 动态带宽分配:由于TS的传输包长度是固定的,因此可将视频、音频和数据信息进行实时的、灵活的分配。
● 可分级性。
● 可扩展性。
● 抗干扰性。
● 接收机成本低廉。

TS文件格式的适用范围

TS作为一种封装文件格式,它的适用范围也较为广泛,其中可应用在以下领域:

● 广播电视领域
TS通常在DVB和ATSC等广播系统中使用。该格式具有纠错和流同步功能,可在信号降级时保持传输完整性。TS流最经典的应用就是我们平时生活中的数字高清电视。

● 实时流媒体
苹果公司发明的HTTP Live Streaming流媒体是基于TS文件的,在直播中将视频流切片或文件片段进行传输,或者是通过给出的TS文件地址依次播放。

● 蓝光光盘/全高清视频
TS作为一种封装格式,MPEG-2或者VC-1等编码都可以封装,同时也是蓝光和全高清视频较为常用的封装格式。所以通常TS格式的视频具有视频质量高、体积大、还原准确的特点,是高清发烧友所喜爱的格式。

● 数码摄像机
为了能适用在数码摄像机,在TS格式分组上增加了4个字节长的时间码。另外,借助时间码也可以用来同步多个摄像机拍摄的内容。

可打开TS视频文件的程序

TS文件通常作为多个文件保存在DVD上,例如“ moviename1.ts”,“ moviename2.ts”,“ moviename3.ts”等。DVD上存储的视频传输流文件可以在DVD播放器中播放。虽然TS文件可以在高清摄像机、蓝光DVD中无需借助其他软件就能直接打开,但是TS视频文件与大多数的媒体播放器、便携式播放器或视频编辑工具都不兼容。

CSDN站内私信我,或文末免费领取最新最全C++/音视频开发学习提升资料,内容包括(C/C++,Linux 服务器开发,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音视频学习路线图等等。

要播放TS视频文件,你可通过以下程序打开:

【科普】TS文件格式:什么是TS?如何打开,编辑和转换它?_第2张图片

由于TS文件的设备兼容性较差,在很多时候需要下载额外的程序才能打开。为了能快速打开该视频文件,那你可尝试将其转换为MP4格式。

如何将TS文件格式转换到MP4格式

如果你想将TS视频文件传输到手机或其他便携式播放器中播放,那最好的办法就是直接转换成更易访问的格式,例如MP4。TS格式与MP4格式都用于存储视频文件以及流媒体传输,但两者在适用领域上有着很大的不同。TS更适用于专业流媒体播放,而MP4是在计算机和移动设备上存储和观看视频的绝佳选择。

TS格式与MP4格式之间的区别:

【科普】TS文件格式:什么是TS?如何打开,编辑和转换它?_第3张图片

TS 格式详解

TS文件(流)可以分为三层:TS层(Transport Stream)、PES层(Packet Elemental Stream)、ES层(Elementary Stream)。

ES层就是音视频数据,PES层是在音视频数据上加了时间戳等对数据帧的说明信息,TS层是在PES层上加入了数据流识别和传输的必要信息。TS文件(码流)由多个TS Packet组成的。

下图是TS文件(码流)的分层结构图:

【科普】TS文件格式:什么是TS?如何打开,编辑和转换它?_第4张图片

TS层

TS包大小固定为188字节,TS层分为三个部分:TS Header、Adaptation Field、Payload。

TS Header固定4个字节;Adaptation Field可能存在也可能不存在,主要作用是给不足188字节的数据做填充;Payload是PES数据。

1. TS Header

TS包的包头提供关于传输方面的信息。

TS包的包头长度不固定,前4个字节是固定的,后面可能跟有自适应字段(适配域)。4个字节是最小包头。

包头的结构体字段如下:

  • sync_byte(同步字节):固定为0x47;该字节由解码器识别,使包头和有效负载可相互分离。
  • transport_error_indicator(传输错误标志):‘1’表示在相关的传输包中至少有一个不可纠正的错误位。当被置1后,在错误被纠正之前不能重置为0。
  • payload_unit_start_indicator(负载起始标志):为1时,表示当前TS包的有效载荷中包含PES或者PSI的起始位置;在前4个字节之后会有一个调整字节,其的数值为后面调整字段的长度length。因此有效载荷开始的位置应再偏移1+[length]个字节。
  • transport_priority(传输优先级标志):‘1’表明当前TS包的优先级比其他具有相同PID, 但此位没有被置‘1’的TS包高。
  • PID:指示存储与分组有效负载中数据的类型。
  • transport_scrambling_control(加扰控制标志):表示TS流分组有效负载的加密模式。空包为‘00’,如果传输包包头中包括调整字段,不应被加密。其他取值含义是用户自定义的。
  • adaptation_field_control(适配域控制标志):表示包头是否有调整字段或有效负载。‘00’为ISO/IEC未来使用保留;‘01’仅含有效载荷,无调整字段;‘10’ 无有效载荷,仅含调整字段;‘11’ 调整字段后为有效载荷,调整字段中的前一个字节表示调整字段的长度length,有效载荷开始的位置应再偏移[length]个字节。空包应为‘10’。
  • continuity_counter(连续性计数器):随着每一个具有相同PID的TS流分组而增加,当它达到最大值后又回复到0。范围为0~15。

2. TS Adaptation Field

Adaptation Field的长度要包含传输错误指示符标识的一个字节。

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

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

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

3. TS Payload

TS包中Payload所传输的信息包括两种类型:视频、音频的PES包以及辅助数据;节目专用信息PSI。

TS包也可以是空包。空包用来填充TS流,可能在重新进行多路复用时被插入或删除。

视频、音频的ES流需进行打包形成视频、音频的 PES流。辅助数据(如图文电视信息)不需要打成PES包。

PES层 & ES 层

1. PES层

PES结构如图:

【科普】TS文件格式:什么是TS?如何打开,编辑和转换它?_第5张图片

从上面的结构图可以看出,PES层是在每一个视频/音频帧上加入了时间戳等信息,PES包内容很多,下面我们说明一下最常用的字段:

  • pes start code:开始码,固定为0x000001。
  • stream id:音频取值(0xc0-0xdf),通常为0xc0;视频取值(0xe0-0xef),通常为0xe0。
  • pes packet length:后面pes数据的长度,0表示长度不限制,只有视频数据长度会超过0xffff。
  • pes data length:后面数据的长度,取值5或10。
  • pts:33bit值
  • dts:33bit值

关于时间戳PTS和DTS的说明:

  1. PTS是显示时间戳、DTS是解码时间戳。
  2. 视频数据两种时间戳都需要,音频数据的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)。

2. ES 层

ES层指的就是音视频数据。

一般的,视频为H.264视频,音频为AAC音频。

TS流生成及解析流程

1. TS 流生成流程

  • 将原始音视频数据压缩之后,压缩结果组成一个基本码流(ES)。
  • 对ES(基本码流)进行打包形成PES。
  • 在PES包中加入时间戳信息(PTS/DTS)。
  • 将PES包内容分配到一系列固定长度的传输包(TS Packet)中。
  • 在传输包中加入定时信息(PCR)。
  • 在传输包中加入节目专用信息(PSI) 。
  • 连续输出传输包形成具有恒定比特率的MPEG-TS流。

2. TS 流解析流程

  • 复用的MPEG-TS流中解析出TS包;
  • 从TS包中获取PAT及对应的PMT;
  • 从而获取特定节目的音视频PID;
  • 通过PID筛选出特定音视频相关的TS包,并解析出PES;
  • 从PES中读取到PTS/DTS,并从PES中解析出基本码流ES;
  • 将ES交给解码器,获得压缩前的原始音视频数据。

 

 

 

 

你可能感兴趣的:(音视频开发,Android音视频开发,流媒体服务器,ffmpeg,TS,音视频,视频编解码,WebRTC)