hls中ts流格式简介
1.ts简介
sync_byte | 8b | 同步字节,固定为0x47 |
transport_error_indicator | 1b | 传输错误指示符,表明在ts头的adapt域后由一个无用字节,通常都为0,这个字节算在adapt域长度内 |
payload_unit_start_indicator | 1b | 负载单元起始标示符,一个完整的数据包开始时标记为1 |
transport_priority | 1b | 传输优先级,0为低优先级,1为高优先级,通常取0 |
pid | 13b | pid值 |
transport_scrambling_control | 2b | 传输加扰控制,00表示未加密 |
adaptation_field_control | 2b | 是否包含自适应区,‘00’保留;‘01’为无自适应域,仅含有效负载;‘10’为仅含自适应域,无有效负载;‘11’为同时带有自适应域和有效负载。 |
continuity_counter | 4b | 递增计数器,从0-f,起始值不一定取0,但必须是连续的 |
- PAT表:他主要的作用就是指明了PMT表的PID值。
- PMT表:他主要的作用就是指明了音视频流的PID值。
- 音频流/视频流:承载音视频内容。
adaptation_field_length | 1B | 自适应域长度,后面的字节数 |
flag | 1B | 取0x50表示包含PCR或0x40表示不包含PCR |
PCR | 5B | Program Clock Reference,节目时钟参考,用于恢复出与编码端一致的系统时序时钟STC(System Time Clock)。 |
stuffing_bytes | xB | 填充字节,取值0xff |
table_id | 8b | PAT表固定为0x00 |
section_syntax_indicator | 1b | 固定为1 |
zero | 1b | 固定为0 |
reserved | 2b | 固定为11 |
section_length | 12b | 后面数据的长度 |
transport_stream_id | 16b | 传输流ID,固定为0x0001 |
reserved | 2b | 固定为11 |
version_number | 5b | 版本号,固定为00000,如果PAT有变化则版本号加1 |
current_next_indicator | 1b | 固定为1,表示这个PAT表可以用,如果为0则要等待下一个PAT表 |
section_number | 8b | 固定为0x00 |
last_section_number | 8b | 固定为0x00 |
开始循环 | ||
program_number | 16b | 节目号为0x0000时表示这是NIT,节目号为0x0001时,表示这是PMT |
reserved | 3b | 固定为111 |
PID | 13b | 节目号对应内容的PID值 |
结束循环 | ||
CRC32 | 32b | 前面数据的CRC32校验码 |
table_id | 8b | PMT表取值随意,0x02 |
section_syntax_indicator | 1b | 固定为1 |
zero | 1b | 固定为0 |
reserved | 2b | 固定为11 |
section_length | 12b | 后面数据的长度 |
program_number | 16b | 频道号码,表示当前的PMT关联到的频道,取值0x0001 |
reserved | 2b | 固定为11 |
version_number | 5b | 版本号,固定为00000,如果PAT有变化则版本号加1 |
current_next_indicator | 1b | 固定为1 |
section_number | 8b | 固定为0x00 |
last_section_number | 8b | 固定为0x00 |
reserved | 3b | 固定为111 |
PCR_PID | 13b | PCR(节目参考时钟)所在TS分组的PID,指定为视频PID |
reserved | 4b | 固定为1111 |
program_info_length | 12b | 节目描述信息,指定为0x000表示没有 |
开始循环 | ||
stream_type | 8b | 流类型,标志是Video还是Audio还是其他数据,h.264编码对应0x1b,aac编码对应0x0f,mp3编码对应0x03 |
reserved | 3b | 固定为111 |
elementary_PID | 13b | 与stream_type对应的PID |
reserved | 4b | 固定为1111 |
ES_info_length | 12b | 描述信息,指定为0x000表示没有 |
结束循环 | ||
CRC32 | 32b | 前面数据的CRC32校验码 |
pes start code | 3B | 开始码,固定为0x000001 |
stream id | 1B |
音频取值(0xc0-0xdf),通常为0xc0 视频取值(0xe0-0xef),通常为0xe0 |
pes packet length | 2B |
后面pes数据的长度,0表示长度不限制, 只有视频数据长度会超过0xffff |
flag | 1B | 通常取值0x80,表示数据不加密、无优先级、备份的数据 |
flag | 1B | 取值0x80表示只含有pts,取值0xc0表示含有pts和dts |
pes data length | 1B | 后面数据的长度,取值5或10 |
pts | 5B | 33bit值 |
dts | 5B | 33bit值 |
F | 1b | forbidden_zero_bit,h.264规定必须取0 |
NRI | 2b | nal_ref_idc,取值0~3,指示这个nalu的重要性,I帧、sps、pps通常取3,P帧通常取2,B帧通常取0 |
Type | 5b | 参考下表 |
nal_unit_type | 说明 |
0 | 未使用 |
1 | 非IDR图像片,IDR指关键帧 |
2 | 片分区A |
3 | 片分区B |
4 | 片分区C |
5 | IDR图像片,即关键帧 |
6 | 补充增强信息单元(SEI) |
7 | SPS序列参数集 |
8 | PPS图像参数集 |
9 | 分解符 |
10 | 序列结束 |
11 | 码流结束 |
12 | 填充 |
13~23 | 保留 |
24~31 | 未使用 |
syncword | 12b | 固定为0xfff |
id | 1b | 0表示MPEG-4,1表示MPEG-2 |
layer | 2b | 固定为00 |
protection_absent | 1b | 固定为1 |
profile | 2b | 取值0~3,1表示aac |
sampling_frequency_index | 4b | 表示采样率,0: 96000 Hz,1: 88200 Hz,2: 64000 Hz,3:48000 Hz,4: 44100 Hz,5: 32000 Hz,6: 24000 Hz,7: 22050 Hz,8: 16000 Hz,9: 12000 Hz,10: 11025 Hz,11: 8000 Hz,12: 7350 Hz |
private_bit | 1b | 固定为0 |
channel_configuration | 3b | 取值0~7,1: 1 channel: front-center,2: 2 channels: front-left, front-right,3: 3 channels: front-center, front-left, front-right,4: 4 channels: front-center, front-left, front-right, back-center |
original_copy | 1b | 固定为0 |
home | 1b | 固定为0 |
copyright_identification_bit | 1b | 固定为0 |
copyright_identification_start | 1b | 固定为0 |
aac_frame_length | 13b | 包括adts头在内的音频数据总长度 |
adts_buffer_fullness | 11b | 固定为0x7ff |
number_of_raw_data_blocks_in_frame | 2b | 固定为00 |
first_mb_in_slice | Golomb编码 | 一般为0,一个slice为一帧图像 |
slice_type | Golomb编码 |
帧类型,2、4、7、9表示I帧,0、3、5、8表示P帧 ,1、6表示B帧。 |
sps | stsd.avc1.avcC |
pps | stsd.avc1.avcC |
dts | stts |
pts | stts + ctts |
帧率 | 帧个数 / 总时长 |
timescale | trak.mdia.mdhd |
帧数据 | stsc + stco + stsz |
pts | stts |
采样频率 | trak.mdia.mdhd |
声道数 | stsd.mp4a |
帧数据 | stsc + stco + stsz |
- AVC1 描述:H.264 bitstream without start codes.一般通过ffmpeg转码生成的视频,是不带起始码0×00000001的,但是带有4字节的长度。
- H264 描述:H.264 bitstream with start codes.一般对于一下HDVD等电影的压制格式,是带有起始码0×00000001的。
- MEDIASUBTYPE_AVC1 'AVC1' H.264 bitstream without start codes.
- MEDIASUBTYPE_H264 'H264' H.264 bitstream with start codes.
- MEDIASUBTYPE_h264 'h264' Equivalent to MEDIASUBTYPE_H264, with a different FOURCC.
- MEDIASUBTYPE_X264 'X264' Equivalent to MEDIASUBTYPE_H264, with a different FOURCC.
- MEDIASUBTYPE_x264 'x264' Equivalent to MEDIASUBTYPE_H264, with a different FOURCC.
hls中ts流格式简介相关推荐
- TS流格式小白入门解读
一.背景介绍 之前我做了一个项目,要求写一个TS流解析的模块,因此看了ISOIEC 13818-1文档,外加很多人的博客来帮助理解,来了解TS流格式是个什么东西,收货颇多.因此我觉得是时候发点干货回馈 ...
- RTSP中TS流结构分析
RTSP中TS流结构分析 UDP数据包整体结构 RTP Header结构 TS Header结构 PAT结构 PMT结构 PES Header结构 ES层 Wireshark抓取TS包 UDP数据包整 ...
- hls之m3u8、ts流格式详解
HLS,Http Live Streaming 是由Apple公司定义的用于实时流传输的协议,HLS基于HTTP协议实现,传输内容包括两部分,一是M3U8描述文件,二是TS媒体文件. 1.M3U8文件 ...
- DVB中TS流数据解析
引 言 数字生活方式是现代文明的一个重要标志.在与人们工作生活密切相关的电脑.手机和电视三大信息平台中,电脑和手机已实现了数字化和网络化,为人们带来了多姿多彩的资讯和娱乐服务,也为相关企业带来了巨额 ...
- VLC视频播放器原理详细分析含TS流格式分析
vlc是一个功能强大的玩意,能做很多有意思的事情. 最简单的,从界面打开一个文件播放,也可以在命令行下使用,如 C:\Program Files\VideoLAN\VLC>vlc.exe tes ...
- Hls之TS流分离音视频
上一篇研究了码流格式,讲得比较理论,有点务虚.这一章开始来点实际的,从ts码流中分离出音视频. ts码流格式: ts流的解析重点其实就是先提取出pes包,再提取码流.
- 音视频基础之复合流解析:TS流格式的讲解
前言: 今天还是搞双十一活动,价格是440(不包括开发板,开发板自己买,这个我多次说了,具体可以看这篇文章:RV1126多路码流功能),周二恢复500,主要是我自己平时要上班,没有时间搞双十一活动,所 ...
- 保存HLS直播中的TS流分片
张威大侠使用Python实现了对HLS中TS分片的保存,代码如下: #!/usr/bin/env python import os,time,copy,sys url="http://vid ...
- (原)关于MEPG-2中的TS流数据格式学习
关于MEPG-2中的TS流数据格式学习 Author:lihaiping1603 原创:http://www.cnblogs.com/lihaiping/p/8572997.html 本文主要记录了, ...
最新文章
- PHP中文件操作基础:文件路径基础
- P2153 晨跑,费用流裸题
- List和Set集合使用
- datastage odbc mysql,Linux系统odbc配置实现Datastage8.x连接mssqlserver数据库
- 1 Linux系统性能测试与监测工具汇总
- 【转】关于DLL的一点介绍
- Android MTK TP Driver 触屏驱动
- 最新Everest 企业版(AIDA64)使用SQL保存数据的方法介绍
- nginx 文件服务器 文件类型,如何配置Nginx限制文件类型?
- 通过Jquery实现文本高亮及取消高亮
- python 已知平行四边形三个点,求第四个点
- 微信小程序上传图片到服务器(java后台以及使用springmvc)
- Linux #! /bin/sh的意思
- html5 树开花效果,几种不用经常照顾的灌木花卉,开成花树后太美了
- 使用R语言 在rstudio中出现 列的数目比列的名字要多 的问题
- 【Codeforces】 A. Computer Game
- 4.18、TCP滑动窗口
- 抓包微信下线的操作思路
- winform直接控制云台_299元,246g,260mm,一天销量破万的智云最新手机云台深度评测...
- 天猫代运营公司十大排名