论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
数据库
›
Oracle
›
音视频学习(二十五):ts
音视频学习(二十五):ts
羊蹓狼
论坛元老
|
2024-12-22 10:37:19
|
显示全部楼层
|
阅读模式
楼主
主题
1019
|
帖子
1019
|
积分
3057
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
TS(MPEG-TS,MPEG Transport Stream)
是一种广泛应用于流媒体传输和存储的容器格式。它最早由 MPEG(Moving Picture Experts Group)组织订定,用于视频和音频的压缩编码。在
HLS(HTTP Live Streaming)
等流媒体协议中,常用 TS 格式来封装视频片断(通常为 .ts 文件),用于网络传输和客户端播放。
概述
TS(Transport Stream)是一种为广播和流媒体应用操持的容器格式,具有高容错性和灵活性,能够承载视频、音频、字幕等多种数据流。它常用于卫星电视、广播电视、视频传播输等场景。
文件扩展名
:.ts。
基本组成
:TS 文件将视频和音频编码流(如 H.264、AAC)分割成固定大小的小数据包(通常为 188 字节)。每个数据包包罗一个或多个编码流的包头和数据负载。
TS文件结构
一个标准的
MPEG-TS 文件
(.ts)重要由
TS 数据包
(Transport Stream Packet)组成,每个数据包的大小固定为 188 字节。每个数据包都包罗一个
包头
和一个
负载
(payload)。
TS 数据包(Transport Stream Packet)结构
每个 TS 数据包的结构如下:
字段长度描述
同步字节
1字节固定值 0x47,用于标识数据包的开始。
错误标志
1字节指示是否发生了错误。
PID(Packet ID)
13位表示该数据包的流标识符,决定了该数据包属于哪个流。
优先级标志
2位用于优先级控制,通常设置为 00。
有效负载指示符
1位表示该包是否包罗有效的数据。
继续传输标志
1位如果设置为1,表示后续包还是同一数据流的一部分。
包计数
1字节每个数据包的序列号。
负载
184字节现实存储的视频或音频数据。
同步字节(Sync Byte)
:每个 TS 数据包的首字节固定为 0x47,这用于包的同步,确保数据包的正确起始。如果接收到一个包的同步字节不是 0x47,则表示包大概已损坏。
错误标志(Error Indicator)
:指示数据包是否损坏。如果包标志为 1,则表示该数据包存在错误,需要抛弃。
PID(Packet Identifier)
:该字段是 13 位长,用于标识该数据包所属于的流范例。每个流都有一个唯一的 PID。例如,视频流、音频流、字幕流等都使用不同的 PID 标识。PID 也有特别寄义:
0x1FFF
:表示一个无效的 PID,通常用于空数据包。
0x0000
:用于 PAT(Program Association Table)。
0x0001
:用于 PMT(Program Map Table)。
负载单元开始指示符(Payload Unit Start Indicator)
:当数据包包罗一个新的数据单元时,该指示符为 1。通常,这意味着数据包的负载部分是一个完备的数据单元的开始(如一个视频帧的开始,或者音频数据的开始)。
自顺应字段控制(Adaptation Field Control)
:指示数据包是否包罗
自顺应字段
。如果该值为 01,则表示没有自顺应字段;如果为 10 或 11,则表示包罗自顺应字段。自顺应字段包罗如时间戳、插入控制字节等信息,用于增补流媒体内容。
负载(Payload)
:负载部分承载了现实的数据内容。根据数据包的 PID,负载部分大概包罗视频数据、音频数据、字幕数据,或者一些控制数据。例如,视频数据通常是 H.264 编码后的数据,音频数据则大概是 AAC 编码的数据。
包头
TS 数据包的包头包罗了同步字节和其他控制信息,包头的结构如下:
字段长度描述
同步字节 (Sync Byte)
1字节固定值 0x47,标识数据包开始。
错误标志 (Error Indicator)
1位如果包发生错误,标识设置为 1。
PID(Packet Identifier)
13位用于标识流范例,指向具体的音视频流。
优先级标志 (Priority Flag)
1位设置为 1 表示优先级较高。
有效负载标志 (Payload Unit Start Indicator)
1位如果为 1,表示该数据包是负载的开始。
自顺应字段控制 (Adaptation Field Control)
2位标识数据包是否有自顺应字段。
包计数(Continuity Counter)
1字节包的连续性计数。
负载
负载部分的内容根据数据包的范例而不同,大概是视频数据、音频数据或其他范例的控制信息。
视频数据
:如果该数据包是视频流的一部分,负载将包罗如 H.264 编码的视频帧数据。
音频数据
:如果该数据包是音频流的一部分,负载将包罗如 AAC 编码的音频帧数据。
字幕数据
:如果该数据包是字幕流的一部分,负载将包罗字幕数据。
TS 文件中的顺应性字段(Adaptation Field)
顺应性字段是可选的字段,通常用于增补流信息,如时间戳、插入字节等。顺应性字段可以包罗:
时间戳
:用于同步音频和视频流。
插入字节
:用于数据包的对齐。
自顺应字段的长度
:指示该字段的长度。
顺应性字段的出现与否由
自顺应字段控制(Adaptation Field Control)
字段决定。如果数据包需要包罗这些信息,它将占据包头后的 1 到 184 字节之间的位置。
工作原理
在
HLS
流媒体协议中,TS 文件用于将视频流和音频流分成若干小片断,每个片断大多为 10 秒钟左右。每个 .ts 文件通常由多个 TS 数据包组成,并通过网络传输给客户端举行播放。
编码流的分割
在 HLS 中,视频(如 H.264)和音频(如 AAC)编码后被分割成一个个 TS 数据包。每个 TS 包包罗该视频片断的一部分或整个音频流的部分内容。由于 TS 数据包是固定大小的,因此视频流和音频流会被切割成多个包举行传输。
数据传输
每个 TS 文件会包罗一个 .m3u8 播放列表文件,客户端根据该播放列表按顺序请求 TS 文件中的数据段。每个 TS 文件通过 HTTP 或其他协议传输给客户端,客户端逐个解析并播放这些数据段。
错误规复与容错
由于 TS 格式具有良好的容错本领,如果某个 TS 数据包出现损坏,播放器可以通过抛弃该数据包来继续播放后续内容。TS 格式的容错本领重要体现在:
每个 TS 数据包的大小固定,可以较容易地实现错误检测和修复。
各个流(视频、音频等)通常是独立的,因此如果一个流的数据包损坏,其他流通常不会受到影响。
TS文件的封装与编码
视频与音频封装
在 TS 文件中,视频流和音频流的数据是独立的,它们通过不同的 PID(Packet Identifier)标识。每个 TS 数据包可以包罗以下范例的流:
视频流
:如 H.264 编码的视频流,通常具有特定的 PID。
音频流
:如 AAC 编码的音频流,具有另一个独立的 PID。
字幕流
:例如,嵌入的字幕也可以作为一个独立的流举行传输。
HLS 流的 TS 切片
在 HLS 流中,视频源文件会被分割成多个小的 .ts 文件(通常每个文件连续约 10 秒钟)。每个 .ts 文件包罗了一个视频段的编码数据,客户端通过 .m3u8 播放列表文件来顺序请求这些 .ts 文件。
TS 文件与 HLS 流的关系
在
HLS
中,每个视频流(如直播视频或点播视频)都被切分成多个小的 TS 文件,每个 TS 文件包罗了一个视频片断。播放器使用 .m3u8 播放列表文件中的链接,按顺序加载这些 TS 文件举行播放。
每个 TS 文件通常包罗一个视频段(如 10 秒钟的 H.264 编码视频片断)和音频段(如 10 秒钟的 AAC 编码音频)。
每个 .m3u8 播放列表文件会列出这些 TS 文件的路径,播放器根据网络状况逐个请求这些文件。
HLS 支持多码率流(例如,低码率、中码率和高码率流),每个流使用不同的 TS 文件和 .m3u8 播放列表。
TS文件的特点
优点
容错性强
:由于 TS 包内置的错误检测和修复机制,使得 TS 格式在流媒体传输中具有较强的容错本领,纵然网络状况不稳定,也能保证流媒体播放的稳定性。
实时性好
:TS 格式特别得当实时流媒体的传输,能够在直播等场景中提供较低的耽误。
灵活性
:TS 文件不但可以包罗视频和音频流,还可以支持字幕、元数据等多种数据流,非常得当多种媒体格式的封装。
缺点
文件大小和传输服从
:TS 文件通过固定大小的数据包传输,大概会导致一定的网络带宽浪费,尤其是对于低比特率流(例如低清楚度视频)的传输。
耽误
:由于每个 TS 文件都需要一定的传输时间和播放时间,所以它的耽误通常比其他实时协议(如 RTMP)要高,尤其是在使用 HLS 举行直播时。
TS 文件与其他容器格式的对比
与 MP4 格式
:
MP4 是基于文件的格式,更得当离线存储和播放,不得当流媒体传输。
TS 格式则是针对流媒体传输而操持,支持边下载边播放,并具有较好的错误规复本领。
与 FLV 和 RTMP
:
TS 和 FLV 都支持流媒体播放,但 TS 在错误规复方面体现更好。
RTMP 通常用于低耽误的直播流,而 TS 更适用于具有容错要求的场景,如通过 HTTP 举行的直播流。
总结
TS 文件(Transport Stream)
是 HLS 流媒体协议中常用的封装格式,它通过将视频、音频和其他数据流切分为固定大小的数据包(188 字节)举行传输,具有高容错性和顺应流媒体传输的本领。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
羊蹓狼
论坛元老
这个人很懒什么都没写!
楼主热帖
让你成为网络世界中有破坏力的人-HTTP ...
一文带你走进【内存泄漏】
dolphinscheduler单机化改造
day01-Tomcat框架分析
3. 视图-触发器-存储过程-索引 ...
使用jsch进行sftp传输时遇到的问题com. ...
基于 Sealos 的镜像构建能力,快速部署 ...
深入理解并发编程同步工具类 ...
邮件管理数据库设计--MySQL
一文搞懂static
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
分布式数据库
网络安全
物联网
虚拟化与私有云
Mysql
DevOps与敏捷开发
程序人生
MES
容器及微服务
移动端开发
快速回复
返回顶部
返回列表