名词缩写翻译:

es:elements stream 基本流

pes:packet elements stream 打包流

pts:presentation time stamp 显示时间戳

dts:decoding time stamp  解码时间戳

pcr:program clock referrence 节目时钟参考

pat:program association table节目关联表

pmt:program map table 节目映射表

sdt:service description section 服务描述段

vbv:video buffer verifer 视频缓冲验证

psi:节目专用信息PSI(Program Specific Information)

std:PTS表示显示单元出现在系统目标解码器(STD: system target decoder)的时间

SCR:(system clock reference) 系统时钟参考 for es sync

STC:(system time clock) 系统时间时钟 for es sync

AVI / PS(Program Stream)/ TS(Transport Stream)/ MKV(Matroska)

(0)264 转换成ts

 

(1)ts packet 打包发送

(2)ts demux 解析

--------------------------------------------author:pkf

----------------------------------------------------time:2014-5-4

----------------------------------------------------------qq:1327706646

(0)264 转换成ts

264->es->pes->ts

 在打包成pes的时候,需要注意的一个问题就是pts/dts,其单位应该是系统时钟。需要在找到每个图像的起始slice的时候,在打包成pes的时 候加上pts/dts。这次的CMMB中,其视频帧只含I/P图像(帧),且每个图像只有1个片,所以就在读取264原始数据时读到I_slice或 P_slice的时候,一并打入pts。CMMB流正好又有现成的pts,只需读出来,按照CMMB中的换算方法,每22500就是1秒,就能得出pts 的值,而不需要我自己手动的去计算添加。每个I、P、B帧的包头都有一个PTS和DTS,但PTS与DTS对B帧都是一样的无须标出B帧的DTS。对I帧和P帧,显示前一定要存储于视频解码器的重新排序缓存器中,经过延迟(重新排序)后再显示,一定要分别标明PTS和DTS
 
      例如,视频帧率为25HZ的时候,即1秒25帧,每帧的间隔40ms。按90Khz的视频频率来算的话,其对应的系统时钟数应该是
      1/25*90000 = 3600 个clk。
     所以当分析pes时,其pts字段的33个bit算出来的话,就是按这个clk为单位的。相邻的视频帧的pts之差值为3600.
 http://blog.sina.com.cn/s/blog_92b4f4910101ciku.html
     2、pes -> ts
     h264打包成ts的时候,还需要打入pat和pmt。pmt里指定了视频的类型和pid。
     pes打包的时候,按ts协议格式封装即可。
     PCR使用和视频一样的pid,这里把pts当成pcr打进ts包。
http://blog.sina.com.cn/s/blog_92b4f4910101ciku.html
http://blog.csdn.net/zxh821112/article/details/17587215

(1)ts packet 打包发送

1, MPEG-2 TS中的PSI
PSI信息主要包括以下的表:
    PAT(Program Association Table):节目群丛表,该表的PID是固定的0x0000,它的主要作用是指出该传输流ID,以及该路传输流中所对应的几路节目流的 MAP 表和网络信息表的PID。
    PMT(Program Map Table):节目映射表,该表的PID是由PAT提供给出的。通过该表可以得到一路节目中包含的信息,例如,该路节目由哪些流构成和这些流的类型(视频,音频,数据),指定节目中各流对应的PID,以及该节目的PCR所对应的PID。
    NIT(Network Information Table):网络信息表,该表的PID是由PAT提供给出的。NIT的作用主要是对多路传输流的识别,NIT提供多路传输流,物理网络及网络传输的相关的一些信息,如用于调谐的频率信息以及编码方式。调制方式等参数方面的信息。
    CAT(Conditional Access Table):条件访问表,PID - 0x0001。
除了上述的几种表外,mpeg-2还提供了私有字段,用于实现对MPEG-2的扩充。

2, DVB中的SI
Mpeg-2的PSI中提供了不少的相关节目组成和相互关系的信息,从而使得在接收端可以正确的对多路传输流进行分解。但是这些信息在实际使用时仍显得不够,为此在DVB中采用SI对PSI信息进行了进一步的扩展。
除了在PSI中的信息之外,DVB还定义了一些其他的一些表。
SI的主要用途有:
a、根据NIT,PAT,PMT等信息可以进行自动的频道调谐;
b、更方便的对节目进行选择和定位;
c、实现电子节目指南EPG(Electronic Program Guide),等等。
PSI中的信息基本上都是与当前码流相关的,即它们所涉及的内容都与当前码流中的部分信息相关。与PSI不同的是,SI的信息可以包括不在当前码流中的一些服务和事件,允许用户进行更多的选择和了解更多的其他服务信息。
DVB规定携带SI信息的传输包必须用指定的PID,指定的PID如下表:

TABLE TYPE                PID Value
PAT                                0X0000
CAT                               0X0001
TSDT               0X0002
RESERVED                   0X0003 TO 0X000F
NIT,ST                         0X0010
SDT,BAT,ST 0X0011
EIT,ST                         0X0012
RST,ST                        0X0013
TDT,TOT,ST             0X0014
Network Synchroniztion 0X0015
Reserved for future use 0X0016 TO 0X001B
Inband signaling             0X001C
Measurement                 0X001D
DIT                                 0X001E
SIT                                 0X001F

在该表中可以看到同一个PID可以对应不同的表,要把这样的表区分开来,需要进一步找到TableID 进行识别。TableID表如下:         
Value   Description 
0x00 Program_association_section
0x01 Conditional_access_section
0x02 Program_map_section
0x03 Transport_stream_description_section
0x04 TO 0x3F Reserved
0x40 Network_information_section-actual_network
0x41 Network_information_section-other_network
0x42 Service_description_section-actual_transport_stream
0x43 TO 0x45 Reserved for future use
0x46 Service_description_section-other_transport_stream
0x47 TO 0x49 Reserved for future use
0x4A Bouquet_association_section
0x4B TO 0x4D Reserved for future use
0x4E Event_information_section-actual_transport_stream,P/F
0x4F Event_information_section-other_transport_stream,P/F
0x50 TO 0x5F Event_information_section-actual_transport_stream,schedule
0x60 TO 0x6F Event_information_section-other_transport_stream,schedule
0x70 Time_data_section
0x71 Running_status_section
0x72 Stuffing_section
0x73 Time_offset_section
0x74 TO 0x7D Reserved for future use
0x7E Discontinuity_information_section
0x7F Selection_information_section
0x80 TO 0xFE User defined
0xFF Reserved
有了这两个ID我们可以在码流中找到我们想要的任何一张表。
SI主要包括以下一些信息表:
NIT(Network Information Table):NIT的作用主要是对多路传输流的识别,NIT
提供多路传输流,物理网络及网络传输的相关的一些信息,如用于调谐的频率信息以
及编码方式。调制方式等参数方面的信息。根据此信息设置IRD(Integrated Receiver
Decoder)可以进行多路传输流之间的切换。 
SDT(Service Description Table):用于描述系统中各路节目的名称,该节目的提
供者,是否有相应的时间描述表等方面的信息。该表可以描述当前传输流,也可以描
述其他的传输流,这由TableID进行区分。
EIT(Event Information Table):该表示对某一路节目的更进一步的描述。它提供
事件的的名称,开始时间,时间长度,运行状态等。
TDT(Time and Data Table):该表提供当前的时间信息,该表用来对IRD的解码
时钟进行更新
BAT(Bouquet Association Table):该表提供一系列类似节目的集合。这些节目
可以不在同一个传输流中,利用该表可以很方便的进行相关节目或某一类节目的浏览
和选择。
RST(Running Status Table):该表提供某一具体事件的的运行状态,可用于按时
自动的切换到指定的事件
TOT(Time Offset Table):该表提供当地时间与TDT之间的关系,该表与TDT
配合使用。
TSDT(Transport Stream Description Table):由PID0x0002标识,提供传输流的一
些参数.
ST(Stuffing Table):该表表明其内容是无效的,只是作为填充字节。

send ts

http://blog.csdn.net/xsckernel/article/details/39671025 打包流

(2)ts demux

http://blog.csdn.net/zxh821112/article/details/17587215 ts流格式

http://blog.chinaunix.net/uid-9688646-id-1998407.html ts解码过程

http://www.360doc.com/content/11/0727/11/7399771_136097761.shtml pts dts

http://blog.csdn.net/heanyu/article/details/6229724 概念缩写

http://ttxk.blog.163.com/blog/static/16335079200975115823959

http://blog.csdn.net/haomcu/article/details/7162012  dvb si psi

http://news.cnblogs.com/n/520273/  酷炫动画

http://www.matrix67.com/ m67

http://i.m67.blog.163.com/blog/#m=0 关于青春淡淡的稀里哗啦

http://blog.163.com/laorenyuhai126@126/blog/static/19350779201045080528/

网络协议之ts---ts 流分析详解的更多相关文章

  1. 网络协议之:Domain name service DNS详解

    目录 简介 DNS的功能 DNS的组成 域名空间Domain name space Name servers DNS的工作流程 DNS资源记录 DNS消息的结构 总结 简介 现在是互联网的世界,大家从 ...

  2. Memcache的使用和协议分析详解

    Memcache的使用和协议分析详解 作者:heiyeluren博客:http://blog.csdn.NET/heiyeshuwu时间:2006-11-12关键字:PHP Memcache Linu ...

  3. 网络编程之TCP/IP各层详解

    网络编程之TCP/IP各层详解 我们将应用层,表示层,会话层并作应用层,从TCP/IP五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议,就理解了整个物联网通信的原理. 首先,用户感知到的只 ...

  4. WiFi无线网络参数 802.11a/b/g/n 详解

    转载自:WiFi无线网络参数 802.11a/b/g/n 详解 如转载侵犯您的版权,请联系:2378264731@qq.com 802.11a/b/g/n,其实指的是无线网络协议,细分为802.11a ...

  5. wav文件格式分析详解

    wav文件格式分析详解 文章转载自:http://blog.csdn.net/BlueSoal/article/details/932395 一.综述    WAVE文件作为多媒体中使用的声波文件格式 ...

  6. 线程组ThreadGroup分析详解 多线程中篇(三)

    线程组,顾名思义,就是线程的组,逻辑类似项目组,用于管理项目成员,线程组就是用来管理线程. 每个线程都会有一个线程组,如果没有设置将会有些默认的初始化设置 而在java中线程组则是使用类ThreadG ...

  7. HanLP中人名识别分析详解

    HanLP中人名识别分析详解 在看源码之前,先看几遍论文<基于角色标注的中国人名自动识别研究> 关于命名识别的一些问题,可参考下列一些issue: l ·名字识别的问题 #387 l ·机 ...

  8. linux网络编程之shutdown() 与 close()函数详解

    linux网络编程之shutdown() 与 close()函数详解 参考TCPIP网络编程和UNP: shutdown函数不能关闭套接字,只能关闭输入和输出流,然后发送EOF,假设套接字为A,那么这 ...

  9. GC日志分析详解

    点击返回上层目录 原创声明:作者:Arnold.zhao 博客园地址:https://www.cnblogs.com/zh94 GC日志分析详解 以ParallelGC为例,YoungGC日志解释如下 ...

随机推荐

  1. Android传感器的介绍

    在Android2.3 gingerbread系统中,google提供了11种传感器供应用层使用. #define SENSOR_TYPE_ACCELEROMETER       1 //加速度#de ...

  2. Office 如何下载网页的视频 JWPlayer的内嵌视频

    右击页面空白处,查看页面源代码 在里面搜索mp4或者swf,video,一般网页中的视频都是这些格式,仔细找一定能找到对应的地址 然后复制到迅雷下载即可

  3. vue - for 遍历对象和遍历对象数组

    1. 遍历对象时,参数: 第一个为值,第二个为键名,第三个为索引 <!DOCTYPE html> <html lang="en"> <head> ...

  4. Android性能优化典范(一)

    2015年伊始,Google发布了关于Android性能优化典范的专题,一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App.课程专题不仅仅介绍了Android系统中有关 ...

  5. 【服务器时间修改为东八区】包括Apache2和mysql

    1.服务器Apache时间修改,可通过修改php.ini进行修改 所以就深入了解了一下, 发现Apache(PHP)的服务器时间时区默认为UTC(Coordinated UniversalTime 世 ...

  6. xpath的基础实例

    本文分为路径表达式和常用函数两部分,整理自火车浏览器官方教程-火车浏览器之Xpath讲解. 小提示:可以使用火狐浏览器.我用的是火狐浏览器+firebug+firepath来进行调试,调试界面是这样的 ...

  7. .Net程序员面试 中级篇 (回答Scott Hanselman的问题)

    继<.Net 程序员面试 C# 语言篇 (回答Scott Hanselman的问题)>跟<.Net程序员面试 每个人都应知道篇 (回答Scott Hanselman的问题)>之 ...

  8. Openresty + nginx-upload-module支持文件上传

    0. 说明 这种方式其实复杂,麻烦!建议通过这个方式搭建Openresty文件上传和下载服务器:http://www.cnblogs.com/lujiango/p/9056680.html 1. 包下 ...

  9. Android实现微信自己主动抢红包的程序

    简单实现了微信自己主动抢红包的服务,原理就是依据keyword找到对应的View, 然后自己主动点击.主要是用到AccessibilityService这个辅助服务,基本能够满足自己主动抢红包的功能, ...

  10. python学习之sys模块

    查看python的版本 >>> sys.version_info[] sys.argv 列表对象,传入模块参数的都会放入列表中. #-*- coding: utf-8 -*- # i ...