离线分析:给数字电视一双慧眼

时间:2022-06-06 01:12:05

离线分析:给数字电视一双慧眼

无论是使用卫星接收机接收DVB-S格式的卫星电视,还是使用机顶盒接收DVB-C格式的数字有线电视,对传输的数字电视码流做码流进行分析都有助于更好地了解码流速率、编码格式以及其它传输中的辅助信息,因此码流分析是接收数字电视一个很好的工具。但是码流分析需要使用码流分析仪,而常见的码流分析仪价格比较贵,仅仅单纯做实时分析的码流分析仪大约需要几万元人民币,而具有码流存储、发生和码流分析功能的码流分析仪要十几万元,一般的接收者无法拿出那么多的资金购买,所以导致码流分析在TVRO领域始终是一个比较陌生的概念。

利用电脑和专用的码流分析软件,配合数字电视接收卡,比如常见的Twinhan卡,将接收的内容以ts流的格式保存下来,可以对传输流中的一些传输控制信息做分析和比较,低成本实现离线分析的功能。系统的硬件部分主要利用家用电脑平台,所以成本很低,应该可以被一般消费者所接受。系统中用到了几个方面的软件,如码流分析功能的实现需要MPEGID和SiShow等数据分析软件,码流解复用功能的实现需要HDTV To MPEG2和TS2PS等,而对视音频编码格式做鉴别的软件包括Gspot和Procodec等。下面结合笔者手上的一个DVB-C TS流文件简要介绍一下上述软件使用方法和一些相关数据的格式。

码流分析

做TS流的码流分析之前,需要了解TS流的结构和MPEG标准中的码流的体系结构,MPEG的标准中码流的系统结构如图1。

多路视音频数据经过打包和复用变成了传输码流TS和节目码流PS,以便于传输。这是两种在不同的环境下使用的码流格式,在传输条件相对恶劣的环境中,使用TS流保证传输数据可以正确传输,所以TS流中的数据纠错机制比较强。在DVB格式的传输中,使用的就是TS流。而PS流使用在需要保存视音频数据的应用中,日常生活中常见的DVD就是使用这种格式的码流数据。在DVD文件中,常见的VOB格式数据就是将PS格式的视音频复用数据做码流变换后得到的。TS流除了用于传输领域之外,在文件的存储和交换等领域也大量应用,以HDTV为例,在网络中出现的电影文件中,相当多的文件是以TS格式的形式在传播,它的一个重要标志是以.ts作为文件的后缀。由于应用环境的不同,两种码流存在着比较大的差距。

常见的码流分析应用软件以MPEGID和SiShow比较常见,二者的侧重点有所不同。

用MPEGID做码流分析的界面如图2,可以看到码流中复用的各个节目的视音频数据的PID值和视音频编码的一些信息。这是一个复用了6路节目的码流,节目的PID值分别是:0515、0516、0517、0518、0519和051A,这些PID值是十六进制的,转换成十进制后就是1301、1302……,这在用下面的SiShow分析是可以看到,两者的值是一样的,只是采用了不同进制表示而已。以PID为0x0515的节目流为例,视频流的PID值为0x1310,码流类型为0x02,流id为0xe0,视频流的速率为5Mbps,码流的编码格式是MP@ML,视频分辨率为704×576。

数字电视是将多个视音频码流复用在一起传输的,为了区分每一个数据包,所以必须为每个数据流标识一个独一无二的ID值,称为PACKET ID,其通常说的PID。PID共有13位二进制数据,因为213=8192,所以PID值的范围为从0至8191。

在MPEGID码流分析中可以看到编码方式为MAIN PROFILE和MAIN LEVEL,一般缩写为MP@ML。此前在《卫星电视与宽带多媒体》杂志发表的王秀军老师的一篇文章中,将类和级分别称为编码和解码端的处理方法,其实是一种误解。类是指在做MPEG视频编码时采用的方法的集合,越高级的类采用的编码方法越多,对于图像的处理也越精细。而级是待处理的源图像的图像格式,分为四级。并不是所有的类和级的组合都有用,其中只有11种组合是有实际的应用价值的,不同的组合可以见表1。其中的MP@ML就是DVB-S中应用的,一般的卫星接收机芯片可以解码和接收,在前些日子开播的CCTV HD高清频道中采用的是MP@HL的组合,由于现有的解码芯片不支持这种编码格式,所以才会有数字接收机无法接收和解码的现象出现。

MPEGID所做的码流分析相对简单,每个PID值对应一种类型的数据,比较容易识别。只有图3中PID为0xFFFF(16进制,10进制为8191)的码流是空的码流,是为了填充数据而形成的空包。在数字电视的码流中,一定会存在空的数据包,并且其PID值为8191,这是为了保证一定的带宽,它是DVB标准所确定的。

和MPEGID相比较,SiShow软件更多显示的是码流的服务信息(Service Information)的细节。为了保证电视数据传输,需要定义很多额外的信息,MPEG标准定义了有关PID和各个数据之间的信息,称为节目专用信息PSI(Program Specific Information),DVB组织扩展的称为服务信息SI,SiShow主要是对上述的两类信息进行分析和对比。

PSI信息包括版本号以及节目相关表PAT、节目对应表PMT、条件接收表CAT和网络信息表NIT,而SI信息中包含了网络信息表NIT、业务描述表SDT等。

在图4中PID值为0的数据就是PAT表,在所有的PSI信息中,PAT表可以说是比较重要的,它是接收端解码过程所需的开始信息,它的PID值恒定为0。图4的PAT表中,列出了码流中各个单一码流的PID值和PMT表的PID值。PMT

表是Program Map Table的缩写,通过它可以找到各个单独的节目流。上述的PID值都是10进制的,例如PID=1301就对应16进制中的PID=0x0515。

图5是SiShow中节目标识为SID=1301的节目包中的一些具体的数据,它包含了table ID和节目名称等信息,由于这个节目包并没有加密,所以不存在条件接入表CAT(Conditional Access Table),在加密传输的电视节目流中,可以看到CAT表,从中可以知道加密系统的一些信息。使用Twinhan卡接收时,很多的接收软件,如ProgDVB等,都可以显示系统的加密状况,就是从CAT表中获取的信息。

这些表并不是必须出现的,有些根据传输状态来确定,用SiShow可以很好的观察这些数据。这些数据对于传送是很重要的辅助数据,起着重要的作用。

一般PSI的速率为100kbps,SI信息速率为256kbps,假如采用加密的手段,还会存在条件接收表CAT,它的速率视整个系统的用户数量来定,一般在512kbps。

码流的分离

采集到的码流还可以进行分解和转换,将TS流转换为图1中的PS流格式的数据,便于保存或者鉴别。码流的分离可以用TS2PS或者HDTV to MPEG2等,理解了前面节目ID、PMT ID等概念,这些具体的操作实际并不难理解。

仍然以DVB-C节目码流为例,图6和图7是使用TS2PS做码流分离的情况。图6中节目号为0x0515,PMT-PID为0x0081的节目码流对应十进制分别为1301和129,即在图5中的辽宁卫视节目,其视频PID为0x1310,音频PID为0x1313。转换后的文件为PS格式的文件,其文件后缀为.mpg,可以用常用的播放软件打开。整个的转换过程要视文件的大小来定,转换较大的文件时,可能会占用大量的系统资源,使电脑运行缓慢。

视频格式的检测

在视频格式的检测方面,MPEGID实际可以部分实现,它可以检测出码流的视频类型、帧速率等多种信息。不过MPEGID的应用范围比较有限,它主要限于MPG文件或者TS文件,以MPEG-2编码的文件为主,无法应用到其它编码格式的文件,所以在视频检测中经常使用Gspot或者ProCodec等软件。

Gspot不仅可以检测以MPEG-1和MPEG-2方式编码的视音频片断,还可以检测其它方式编码的视音频片断。不仅如此,还可以使用Gspot检测系统内部的编码器类型和数量。

在之前的一些文章中,使用Twinhan卡保存的文件有时候会有打不开的现象,实际是系统中没有安装相应的解码软件所致。这里需要澄清的一个问题是:Windows系列操作系统,不管是较早的Windows 98还是现在常用的Windows XP等,都只是一个系统的平台,它需要完成的工作仅仅是管理整个硬件系统,为上层的应用软件提供系统资源,没有必要本身携带大量的编码和解码模块,这些都需要使用者去安装相关的编解码软件。目前集成解码模块比较多的是暴风影音和Media Player Classic等播放软件,最新版的暴风影音已经集成了TS格式的HDTV影音文件的解码器,应用起来比较方便,还是值得安装的。

图8是Gspot检测视频片断的例子,在Gspot中不仅可以检测到视频的一些编码格式,还可以检测音频的编码格式,这对于了解接收到的卫星或者有线电视的节目编码状况是非常有帮助的。

使用软件配合电脑用数字电视接收卡,对数字电视的码流进行分析和变换的方法,仍然存在一些自身的缺陷,和硬件组成的码流分析仪相比在功能上仍旧有一定的差别,但是它可以帮助我们以比较小的代价了解发送端的一些技术细节,是一种值得尝试的工具。

上一篇:高清就在身边(续) 下一篇:《卫星电视与宽带多媒体》杂志北京编辑部同仁...