监控系统录像时视频文件格式的转换方法

2009-05-12 03:14焦淑红
现代电子技术 2009年5期

焦淑红 张 静

摘 要:随着对监控技术需求的不断发展,许多公司建立了自己的文件格式来实现编码技术,以满足不同的应用需求。然而,使用这些私有的文件格式保存多媒体文件,只能用专用播放器才能播放,给使用造成了很大不便。为解决这一问题,提出了一种在视频监控系统进行录像或者下载时,将私有块文件格式封装为MPEG-Ⅱ PS流文件格式保存的方法。介绍了MPEG-Ⅱ PS的背景,私有文件格式的背景,封装前对媒体流的处理方法,以及MPEG-Ⅱ PS流的封装方法,并提出了一种特殊打印时间戳的方法。经过转换后的文件可以被通用播放器,如VLC,暴风影音等播放,并且能够实现音视频同步。

关键词:MPEG-Ⅱ PS;私有文件格式;文件格式转换;时间戳;录像

中图分类号:TN919.8文献标识码:B

文章编号:1004-373X(2009)05-115-04

Video File Format Conversion Method in the Video Surveillance System

JIAO Shuhong,ZHANG Jing

(Information and Communication Engineering College,Harbin Engineering University,Harbin,150001,China)

Abstract:With development of the demand of video surveillance,many companies set up their own file format to meet different application requirements.It is inconvenient because these private files can only be played by special players.To solve this problem,an approach that transcoding private block file to MPEG-Ⅱ PS document format in video or download had been brought up.The background of MPEG-Ⅱ PS,and private block file,the processing methods of media stream before packaging,the packaging methods of MPEG-Ⅱ PS are introduced,and a special time-stamp printing methods is brought up.The file after transcoding can be played by common players,such as VLC,storm player,and so on.Besides,audio and video synchronization in time can be achieved.

Keywords:MPEG-Ⅱ PS;private file format;file format conversion;timestamp;video

0 引 言

监控技术从上个世纪80年代进入我国以来,随着安防需求的急剧增加,随着国内信息化建设的不断深入,一直在飞速发展。目前,视频监控已经发展到了网络多媒体监控系统,并已应用于人们的工作和生活。随着需求的不断发展,更多的编码技术和应用对象正在不断地产生,许多公司建立了自己的文件格式来实现编码技术,以满足不同的应用需求。

然而,使用这些私有的文件格式保存多媒体文件只能用专用播放器才能播放,而一些被客户广泛使用的播放器却无法对这些数据进行处理,因此给客户的使用造成了很大的不便。

为了解决这一问题,提出一种在视频监控系统中,对多媒体文件(包括从网络上接收到的RTP数据包,或者私有格式的多媒体文件)进行录像或者下载时,将数据封装为PS流格式,转换成普通格式的多媒体文件存储的转换方案。利用该技术方案,转换后的多媒体文件包含视频和音频,可以通过暴风影音、VLC播放,并且能够实现音视频同步。

1 MPEG-Ⅱ PS 流背景

在MPEG-Ⅱ标准中,为了将一个或更多的音频、视频,或其他的基本数据流合成单个或多个数据流,以适应于存储和传送,必须对其进行重新打包、编码,在码流中还需要插入各种时间标记、系统控制等信息,最后送到信道编码器与调制器。这样可以形成两种数据流节目流(Program Stream,PS流)和传输流(Transport Stream,TS流)。

TS流与PS流的区别在于:

(1) TS流的包结构是固定长度,而PS流的包结构是可变长度的。

(2) 它们的应用场合不同,PS流适合在出错相对较少的网络环境下使用,其长度是变化的;TS流能够把多个节目在基于一个或多个时间标识的基础上构成一个流,TS流适合在出错较多的场合使用。

(3) PS流主要应用于存储固定时长的节目,如DVD电影,而TS流则主要应用于实时传送的节目,比如实时广播的电视节目。

(4) 很多视频编缉软件是不支持TS流的,所以如果要对视频文件进行处理,要将TS流转换为PS流后,才能进行后期的编辑。

TS流和PS流的形成过程如图1所示。

根据图1可以看出,无论对传输流还是节目流,MPEG-Ⅱ系统复接部分都可分为两个步骤:

(1) 视频和音频的基本流(Elenentary Stream,ES)分别按一定的格式打包,构成具有某种格式的打包基本流(Packetized Elementary Stream,PES),分别称为视频PES和音频PES,这一步骤在打包器内实现,PES的长度可在一定范围内变化。

(2) 将视频、音频的PES流以及辅助数据按不同格式再打包,然后进行复接,即分别生成了PS流和TS流。

PS流一般以一帧数据为一个处理单元,由很多的PES包组成,音视频数据包含在PES包中,PS流的组成示意图如图2所示。

Pack Header一般是14 B或15 B,其中包括包起始字段、SCR字段、节目复合速率字段等。

PES Header 中,包括包起始码前缀字段、流标识字段(一般视频对应0XE0,视频对应0XC0)、数据包长度、PTS和DTS等。

Video,Audio等表示的是视音频裸数据。

2 私有文件存储格式

私有文件格式是由主副两级时间索引组成,磁盘被划分多个数据单元,数据单元是物理时间独立的存储空间,单元内的数据按时间递增顺序存储,以16 KB为基本的存储单位,称之为“块”,其结构如图3所示。

Super Data:记录磁盘信息,包括初始后该磁盘的系统uuid、磁盘最后一次使用时间、分区情况、分区的使用情况等。

Main Index:Main Index是一个结构体,具体记录磁盘主索引信息,包括当前正在写入的块索引号、当前有效的索引数、写入标志(是否循环输入)等。

Data Unit:由主索引管理的存储单元,每块的大小为256 Mb/s。

Second Index :单元副索引,记录单元内 I 帧组使用情况、I 帧组开始时间、I 帧组占用的数据块、I 帧组在单元内的起始位置等。

3 PS流封装前准备

PS流的封装是从获得裸码流开始的,所以在进行PS流封装前,应该对从网络上接收到的数据包或者H3CRD格式的多媒体文件进行处理,以获得音视频的裸码流。

3.1 网络上收到的RTP数据包的处理

网络上收到的RTP数据包的处理流程如图4所示。

其过程描述如下:

(1) 选择数据源,从指定的网络端口上收取多媒体数据包。

(2) 将从网络上接收到的数据包放入帧缓存区中。

(3) 如果此包为当前帧的最后一个包,表明这一帧的数据已经接收完成,将当前帧数据放入I帧组链表。

(4) 将I帧组链表发送到录像线程,进行PS流的封装处理。

(5) 判断网络数据源是否仍有数据,如果有,重复步骤(1)~(4);如果已经没有数据,则退出程序。

3.2 私有格式的多媒体文件的处理

如前面背景中所述,块文件格式的多媒体文件是一种私有多媒体文件格式,要想从块文件格式中得到裸数据,就必须对块文件格式进行解析,解析过程简图如图5所示。

解析过程描述如下:

(1) 设置待转换文件的开始时间和结束时间。

(2) 从磁盘上读取时间索引。

(3) 以块为单位处理数据,直至一个I帧组处理完成,存入I帧组缓冲区。

(4) 发送到录像线程进行PS流封装。

(5) 如果还有数据没有处理,则重复步骤(2)~(4);如果所有数据都已处理完成,则退出程序。

4 PS流封装

无论对实时流,还是私有格式文件,PS流的封装都是从获得裸数据开始的。

PS流封装包括如下几个关键步骤:

(1) PES分组信息的填充。

(2) 节目流包头信息的填充。

(3) 数据的填充。

4.1 PES分组信息的填充

(1) 分组起始码前缀

24位字段,它和后面的Stream_id构成了标识分组起始码,它的值固定填充:0X000001。

(2) 流标识字段

8位字段,它规定了基本流的类型,一般音频:0XC0,视频0XE0。

(3) PES分组长度字段

16位字段,指出了PES分组中跟在该字段后的字节数目。

(4) PTS,DTS标志字段

24位字段,当值为‘10时,PTS字段出现在PES分组信息头中,当值为‘11时,PTS和DTS字段都应出现在PES分组信息头中,当值为‘00时,PTS和DTS都不出现在PES分组信息头中,值‘01是不允许的。

如果一个PES包对应一帧图像,因此在每个包中均应设定与该图像帧对应的PTS值。至于DTS,它不能独立出现,必须与PTS一起发生,DTS值可由PTS值得到,除非对解码过程有特殊要求,一般不设定也不传送DTS,当编码图像帧不含B帧时,也就是说不需要对编码帧顺序进行重排时,DTS值与PTS值是相同的。PTS是PES头中最重要的功能,PTS的差错将导致图像与伴音对不齐之类的错误。音频帧不需要填写DTS字段。

(5) 显示时间标志

PTS是一个编码在三个分离字段的33位数字,它以系统时钟帧率的1/300(即90 kHz)为单位,PTS值计算如下:

PTS=((SCF*FileTimeStamp)/300)%233

其中:SCF为System Clock Frequency的缩写,表示的是系统时钟频率,一般取27 MHz,FileTimeStamp是当前帧的时间戳,它的获取方法是获取接收到当前帧时对应的系统时间,将其换算为以秒为单位时对应的值。

4.2 节目流包头信息的填充

(1) 包起始字段

固定填充0X000001BA,用来标志一个包的开始。

(2) 系统时钟参考

系统时钟参考,是一个分两部分编码的42位字段,第一部分System_Clock_ Reference_Base,是一个长度为33位字段,它以系统时钟频率的1/300为单位,其值的计算方法如下:

SCR_Base=((SCF*FileTimeStamp)/300)%233

第二部分System_Clock_Reference_ Extention是一个长度为9位的字段,它以系统时钟频率为单位,其值的计算方法是:

SCR_Extention=(SCF*FileTimeStamp)%300

4.3 数据区的填充

无论是对实时流的处理还是对私有块文件格式的多媒体文件处理,都是以帧为单位进行读取和封装的。在每帧数据的帧头信息中可以知道该帧数据的长度和数据存放位置,由于PS流的包结构是可变长度的,因此根据该帧数据的长度,将数据顺序填入PES Packer Header之后的数据区中。

5 时间戳的打印方式

PS流的封装方法基本遵循MPEG-II标准,显示时间标志PTS(Presentation Time Stamp)和解码时间标志DTS(Decoding Time Stamp) 是保证音视频准确同步的重要信息。PTS,DTS计算公式如下:

((SCF*FileTimeStamp)/300)%233

式中,SCF指系统时钟频率,取固定值27 MHz,FileTimeStamp为当前帧的时间戳,表示的是输入的到达时间,由于此处采用的是系统时间格式,所以当前帧的时间戳就是当前帧到达时的系统时间。

但是对于在录像或下载时,进行文件格式转换工作,会受到网络环境的限制,在网络环境比较恶劣的时候,并不能保证数据流的连续,因此,如果按照MPEG-Ⅱ标准,时间戳为输入的到达时间,在录成文件回放时,是按照时间戳来回放的,在这种情况下,很难保证回放时画面的流畅和音视频的同步,这样会严重影响图像质量。

为解决这一问题,必须采用一种独特的打印时间戳的方法,称之为“手动打印时间戳”的方式,就是在得到第一帧图像时,采用系统时间作为当前帧的时间戳,而两帧图像的时间间隔为40 ms,因此对第一帧之后的视频帧,时间戳是以在前一帧基础上增加40 ms的方式打印的,这样可有效解决录像后文件受网络环境限制的问题,使文件格式转换后的图像质量得到了进一步保障。

6 结 语

经过以上的处理,就将私有的块格式文件转换为MPEG-PS的格式,可以使用通用的媒体播放器,如:VLC,暴风影音等播放。解决了通用播放器无法处理私有格式数据,使用非常不便的问题。

参考文献

[1]姚雪峰,王华军,吕乃光,等.基于WINDOWS平台的多媒体文件格式转换原理与实现[J].计算机系统应用,2006(3):67-69,35.

[2]王轶.基于WinCE的移动客户端的网络视频监控系统[D].大连:大连海事大学,2008.

[3]刘昕宇.荆门电信“全球眼”视频监控系统设计[D].大连:大连海事大学,2008.

[4]创新科.平安城市视频监控数据存储技术方案[EB/OL].http://vm.lmtw.com/FA/200712/44339.html,2007.

[5]谢志华.MPEG-2 TS流处理及其网络传输技术的研究[D].江西:江西师范大学,2004.

[6]梅剑平,全子一.MPEG-2系统复接技术[EB/OL].http://www.catvshow.com/tech-center/digital-TV/5-26/MPEG-2-1.htm,2007.

[7]佚名.MPEG-2系统的传输流复用方式[EB/OL].http://met.fzu.edu.cn/cai/satellite/wangshangjiaoxue/2-5.htm,2006.

[8]陈磊.一种视频监控数据存储管理方法及系统[P].中国:200610103523.4,2006.

[9]GB/T 17975.1-2000.信息技术 运动图像及其伴音信息的通用编码[S].2000.