数字法庭的流媒体实时录制文件的生成方法、装置和系统
技术领域
本发明涉及通信技术领域,特别是涉及一种应用于数字法庭的流媒体实时录制文件的异常处理方法、装置和系统。
背景技术
随着通信技术的快速发展,用于远程庭审的数字法庭技术节约了已经逐步得到推广。远程庭审的数字法庭技术的核心技术在于流媒体传输。
流媒体传输技术的主要特点是以流(stream)的形式进行音视频等多媒体数据传输。它在播放前不需要将整个媒体文件下载下来,只是将媒体文件放到流媒体服务器上,客户端播放器通过连接流媒体服务器,边下载,边播放。客户端播放器开辟一块内存,服务器一边不停的向这块内存中传输媒体文件数据,客户端播放器一边不停的从这块内存中读取媒体文件数据向用户进行播放,如此,形成一个像流水一样源源不断的过程。
目前数字法庭的流媒体服务器所使用的媒体文件多为MP4或者3GP文件,MP4文件和3GP文件都遵守ISO 14496 part 12规范。ISO 14496 part 12规范具有广泛的应用性,既能够在本地进行播放,又能够以流媒体的方式在网络上进行播放,并不针对某种特定的应用。
MP4文件或者3GP文件的数据主要分成两部分:meta-data和media data。这两种数据在MP4文件中是分开进行存储的。Media data指媒体数据,例如视频帧,或者音频sample;Meta data指元数据,用于描述media data,例如媒体文件的时长,媒体流的编码格式,媒体数据在文件中的位置,媒体数据播放时间戳,媒体数据流化信息等。
在MP4文件或者3GP文件中,不论是media data,还是meta data都被封装在一个称之为Box的单元中。Box是MP4文件或者3GP文件存储的基本单元,也就是说MP4文件或者3GP文件是由一系列Box组成。media data被封装在media data box中,简称mdat;meta data被封装在movie box中,简称moov。
Moov由一系列子Box组成。其中在子box mvhd(movie header box),tkhd(track header box),mdhd(media header box)保存媒体数据的时长;在子box stbl(sample table box)描述每一个音视频帧,这些信息包含文件中每个音视频帧的大小,播放时间戳,在文件中的存储位置,以及编码类型。
现有的数字法庭中的媒体文件中写数据的方式如下:
将ftyp(file type box)写入文件;
将mdat(media data box)的头写入文件;
将moov(movie box)的内容保存在内存中;
将媒体数据依次写在文件中mdat头的后面;
根据写入的媒体数据,将每一帧音视频数据的信息更新内存moov中的子box stbl中,同时更新子box mvhd,tkhd,mdhd中媒体数据时长信息;
当写媒体数据结束时,更新mdat头在文件中size大小;
将内存中的moov写入在文件中mdat结束位置后面。
现有的往媒体文件中写数据存在以下问题:
由于moov一直存储在内存中,会导致以下两个问题:
1.当程序崩溃时,或者断电时,moov信息没有及时写入文件,导致所录制的法庭庭审情况的媒体文件无法播放;
2.随着不断地往文件中写媒体数据,moov占用的内存也会越来越大,这对于并发量很大的流媒体录制服务器来说是很危险的。
发明内容
鉴于现有技术的缺陷,本发明提供一种利数字法庭的流媒体实时录制文件的生成方法、装置和系统,保证异常情况下的文件可以被客户端播放器播放,或者保证异常情况下的文件可以被流媒体服务器流化。这个方法的主要特点是在将媒体数据写入文件的同时,也实时地将moov媒体信息写入文件,从而避免了上述情况的发生。
一方面,本发明提供一种数字法庭的流媒体实时录制文件的生成方法,所述的方法包括:
将第一文件区块chunk中的媒体数据存入至第一存储空间;
将与所述第一文件区块chunk中的媒体数据对应的媒体数据信息存入至第二存储空间;
当所述第一存储空间被存满时,将所述第一文件区块chunk中的媒体数据写入至流媒体实时录制文件,并且将所述第二存储空间内的媒体数据信息写入至流媒体实时录制文件。
可选的是,所述的方法还包括:
所述第一存储空间的第一文件区块chunk中的媒体数据被写入至所述流媒体实时录制文件之后,将第二存储空间中的媒体数据信息清除;
所述第一存储空间的第一文件区块chunk中的媒体数据被写入至所述流媒体实时录制文件之后,将所述第一存储空间中的文件区块Chunk的当前地址设置为起始地址;
将第二文件区块chunk中的媒体数据写入至所述第一存储空间;
将与所述第二文件区块chunk中的媒体数据对应的媒体数据信息存入至第二存储空间;
当所述第一存储空间再次被存满时,将所述第二文件区块chunk中的媒体数据写入至流媒体实时录制文件,并且将所述第二存储空间内的媒体数据信息写入至流媒体实时录制文件;
重复上述操作,直至所有文件区块chunk中的媒体数据都被写入至流媒体实时录制文件。
可选的是,所述文件区块chunk中的媒体数据包括至少一帧视频数据或音频数据。
可选的是,所述第一存储空间、所述第二存储空间是:用于暂存流媒体实时录制文件的内存中的一部分空间。
另一方面,本发明还提供一种数字法庭的流媒体实时录制文件的生成装置,其特征在于,所述的数字法庭的流媒体实时录制文件的生成装置包括:
第一存储空间写入装置,用于将第一文件区块chunk中的媒体数据存入至第一存储空间;
第二存储空间写入装置,用于将与所述第一文件区块chunk中的媒体数据对应的媒体数据信息存入至第二存储空间;
流媒体实时录制文件写入装置,用于当所述第一存储空间被存满时,将所述第一文件区块chunk中的媒体数据写入至流媒体实时录制文件,并且将所述第二存储空间内的媒体数据信息写入至流媒体实时录制文件。
可选的是,所述的数字法庭的流媒体实时录制文件的生成装置还包括:
第二存储空间清除装置,用于所述第一存储空间的第一文件区块chunk中的媒体数据被写入至所述流媒体实时录制文件之后,将第二存储空间中的媒体数据信息清除;
文件区块的地址设置装置,用于所述第一存储空间的第一文件区块chunk中的媒体数据被写入至所述流媒体实时录制文件之后,将所述第一存储空间中的文件区块Chunk的当前地址设置为起始地址;
所述第一存储空间写入装置,还用于将第二文件区块chunk中的媒体数据写入至所述第一存储空间;
所述第二存储空间写入装置,还用于将与所述第二文件区块chunk中的媒体数据对应的媒体数据信息存入至第二存储空间;
所述流媒体实时录制文件写入装置,还用于当所述第一存储空间再次被存满时,将所述第二文件区块chunk中的媒体数据写入至流媒体实时录制文件,并且将所述第二存储空间内的媒体数据信息写入至流媒体实时录制文件;直至所有文件区块chunk中的媒体数据都被写入至流媒体实时录制文件。
可选的是,所述文件区块chunk中的媒体数据包括至少一帧视频数据或音频数据。
可选的是,所述第一存储空间、所述第二存储空间是:用于暂存流媒体实时录制文件的内存中的一部分空间。
再一方面,本发明还一种数字法庭的流媒体实时录制文件的生成系统,其特征在于,所述的系统包括:多媒体编解码设备DVC和流媒体服务器;所述多媒体编解码设备DVC用于网络媒体编解码,把流媒体编解码数据传送给流媒体服务器,流媒体服务器接收来自于DVC的数据实时录制下来;
其中:所述流媒体服务器包括:用于数字法庭的流媒体实时录制文件的生成装置;
所述用于数字法庭的流媒体实时录制文件的生成装置包括:第一存储空间写入装置,用于将第一文件区块chunk中的媒体数据存入至第一存储空间;第二存储空间写入装置,用于将与所述第一文件区块chunk中的媒体数据对应的媒体数据信息存入至第二存储空间;流媒体实时录制文件写入装置,用于当所述第一存储空间被存满时,将所述第一文件区块chunk中的媒体数据写入至流媒体实时录制文件,并且将所述第二存储空间内的媒体数据信息写入至流媒体实时录制文件。
可选的是,所述的系统还包括:客户端,用于从所述流媒体服务器获取并播放所述流媒体数据。
本发明的有益效果在于:本发明提供的技术方案能够保证异常情况下的文件可以被客户端播放器播放,或者保证异常情况下的文件可以被流媒体服务器流化。这个方法的主要特点是在将媒体数据写入文件的同时,也实时地将moov媒体信息写入文件,从而避免了上述情况的发生。这个方法的主要特点是在将媒体数据写入文件的同时,也实时地将媒体信息(例如:moov媒体信息)写入文件,从而避免了上述情况的发生。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的数字法庭的流媒体实时录制文件的生成方法的流程图;
图2为本发明提供的数字法庭的流媒体实时录制文件的生成方法的另一流程图;
图3为本发明提供的数字法庭的流媒体实时录制文件的生成装置的结构示意图;
图4为本发明提供的数字法庭的流媒体实时录制文件的生成装置的另一结构示意图;
图5为本发明提供的数字法庭的流媒体实时录制文件的生成系统的结构示意图;
图6为本发明提供的数字法庭的流媒体实时录制文件的生成系统的另一结构示意图;
图7为本发明提供的数字法庭的流媒体实时录制文件的生成方法的又一结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了便于理解本发明提供的技术方案,以下以MP4或3GP文件为例,介绍本发明所提供的技术方案。本发明所提供的主要技术概括如下:在媒体文件中以文件区块chunk来组织媒体数据(例如:sample数据),一个文件区块chunk由时间连续的若干个媒体数据sample组成。将一个文件区块chunk的媒体数据信息存储在内存中的文件包moov中,当文件区块chunk中的媒体数据sample满了以后,将内存文件盒moov写入媒体实时录制文件,同时更新媒体数据的时长,在写入媒体实时录制文件以后,将内存文件盒moov中的媒体数据信息清除,为下一个文件区块chunk的媒体数据信息暂存在内存文件盒moov中做准备。这样每写完一个文件区块chunk,就会将媒体数据信息实时更新写入媒体实时录制文件,这样当发生程序崩溃,或者断电时,保证了文件可以被播放和流化,同时丢失的媒体数据信息可以控制在一个文件区块chunk以内,从实测数据上分析,使用本发明提供的技术方案可以将媒体数据信息的丢失时间控制在1秒钟以内。
图1所示为本发明提供的利用虚拟多维数据集建立数据仓库的系统的结构示意图。所述的方法包括:
步骤S101,将第一文件区块chunk中的媒体数据存入至第一存储空间;
该第一存储空间是:用于暂存流媒体实时录制文件的内存中的一部分空间。第一存储空间可以是通过向内存申请得到。可选的是,所述文件区块chunk中的媒体数据包括至少一帧视频数据或音频数据(例如:多帧媒体数据sample)。一个文件区块chunk中具体保护多少帧数据,本发明并不以此为限,本领域的技术人员可以根据实际需求进行灵活设置。
步骤S102,将与所述第一文件区块chunk中的媒体数据对应的媒体数据信息存入至第二存储空间;
该第二存储空间同样也是:用于暂存流媒体实时录制文件的内存中的一部分空间。第二存储空间可以是通过向内存申请得到。举例来讲,第二存储空间所存储的媒体数据信息可以是如下信息:box mvhd(movie header box)、tkhd(track header box)、mdhd(media header box)保存的媒体数据的时长;子box stbl(sample table box)描述的每一个音视频帧,这些信息包含文件中每个音视频帧的大小,播放时间戳,在文件中的存储位置,以及编码类型等。
步骤S103,当所述第一存储空间被媒体数据(例如:sample数据)存满时,将所述第一文件区块chunk中的媒体数据写入至流媒体实时录制文件,并且将所述第二存储空间内的媒体数据信息写入至流媒体实时录制文件。
图2所示为本发明提供的利用虚拟多维数据集建立数据仓库的系统的结构示意图。所述的方法还包括:
步骤S104,所述第一存储空间的第一文件区块chunk中的媒体数据被写入至所述流媒体实时录制文件之后,将第二存储空间中的媒体数据信息清除;
由于在步骤S103中第一存储空间中所存储的“第一文件区块chunk中的媒体数据”及“第二存储空间内的媒体数据信息”已经被写入至流媒体实时录制文件,这样,就可以将第二存储空间内的媒体数据信息进行清除了,以便于接下来的后续的第二文件区块继续被存入至第一存储空间;
步骤S105,所述第一存储空间的第一文件区块chunk中的媒体数据被写入至所述流媒体实时录制文件之后,将所述第一存储空间中的文件区块Chunk的当前地址设置为起始地址(由于文件区块占用一定的存储空间,当第一文件区块Chunk内的媒体数据被写入录制文件后,则可将文件区块Chunk的当前位置改为起始位置以用于下一区块);
步骤S106,将第二文件区块chunk中的媒体数据写入至所述第一存储空间;
步骤S107,将与所述第二文件区块chunk中的媒体数据对应的媒体数据信息存入至第二存储空间;此过程与步骤S102类似,在此不再赘述。
步骤S108,当所述第一存储空间再次被存满时,将所述第二文件区块chunk中的媒体数据写入至流媒体实时录制文件,并且将所述第二存储空间内的媒体数据信息写入至流媒体实时录制文件;;此过程与步骤S103类似,在此不再赘述。
步骤S109,重复上述写入数据及擦除数据的操作,直至所有文件区块chunk(第三文件区块、第四文件区块……第N文件区块)中的媒体数据都被写入至流媒体实时录制文件。
图3为本发明提供的数字法庭的流媒体实时录制文件的生成装置100的结构示意图。为了便于理解,在阅读图3时也请一并参阅上述图1至图2所提供的数字法庭的流媒体实时录制文件的生成方法。所述的数字法庭的流媒体实时录制文件的生成装置100包括:第一存储空间写入装置101、第二存储空间写入装置102和流媒体实时录制文件写入装置103。其中
第一存储空间写入装置101,用于将第一文件区块chunk中的媒体数据存入至第一存储空间;
该第一存储空间是:用于暂存流媒体实时录制文件的内存中的一部分空间。第一存储空间可以是通过向内存申请得到。可选的是,所述文件区块chunk中的媒体数据包括至少一帧视频数据或音频数据(例如:多帧媒体数据sample)。一个文件区块chunk中具体保护多少帧数据,本发明并不以此为限,本领域的技术人员可以根据实际需求进行灵活设置。
第二存储空间写入装置102,用于将与所述第一文件区块chunk中的媒体数据对应的媒体数据信息存入至第二存储空间;
该第二存储空间同样也是:用于暂存流媒体实时录制文件的内存中的一部分空间。第二存储空间可以是通过向内存申请得到。举例来讲,第二存储空间所存储的媒体数据信息可以是如下信息:box mvhd(movie header box)、tkhd(track header box)、mdhd(media header box)保存的媒体数据的时长;子box stbl(sample table box)描述的每一个音视频帧,这些信息包含文件中每个音视频帧的大小,播放时间戳,在文件中的存储位置,以及编码类型等。
流媒体实时录制文件写入装置103,用于当所述第一存储空间被存满时,将所述第一文件区块chunk中的媒体数据写入至流媒体实时录制文件,并且将所述第二存储空间内的媒体数据信息写入至流媒体实时录制文件。
图4为本发明提供的数字法庭的流媒体实时录制文件的生成装置100的另一结构示意图。所述的数字法庭的流媒体实时录制文件的生成装置100还包括:第二存储空间清除装置104,用于所述第一存储空间的第一文件区块chunk中的媒体数据被写入至所述流媒体实时录制文件之后,将第二存储空间中的媒体数据信息清除;
由于第一存储空间中所存储的“第一文件区块chunk中的媒体数据”及“第二存储空间内的媒体数据信息”已经被写入至流媒体实时录制文件,这样,就可以将第二存储空间内的媒体数据信息进行清除了,以便于接下来的后续的第二文件区块继续被存入至第一存储空间;
所述的数字法庭的流媒体实时录制文件的生成装置100还包括:文件区块的地址设置装置105,用于所述第一存储空间的第一文件区块chunk中的媒体数据被写入至所述流媒体实时录制文件之后,将所述第一存储空间中的文件区块Chunk的当前地址设置为起始地址(由于文件区块占用一定的存储空间,当第一文件区块Chunk内的媒体数据被写入录制文件后,则可将文件区块Chunk的当前位置改为起始位置以用于下一区块);
所述第一存储空间写入装置101,还用于将第二文件区块chunk中的媒体数据写入至所述第一存储空间;
所述第二存储空间写入装置102,还用于将与所述第二文件区块chunk中的媒体数据对应的媒体数据信息存入至第二存储空间;
所述流媒体实时录制文件写入装置103,还用于当所述第一存储空间再次被存满时,将所述第二文件区块chunk中的媒体数据写入至流媒体实时录制文件,并且将所述第二存储空间内的媒体数据信息写入至流媒体实时录制文件;直至所有文件区块chunk中的媒体数据都被写入至流媒体实时录制文件。
通过重复上述写入数据及擦除数据的操作,直至所有文件区块chunk(第三文件区块、第四文件区块……第N文件区块)中的媒体数据都被写入至流媒体实时录制文件。
图5为本发明提供的数字法庭的流媒体实时录制文件的生成系统的结构示意图;该数字法庭的流媒体实时录制文件的生成系统,包括:多媒体编解码设备DVC200和流媒体服务器300;
多媒体编解码设备DVC200用于网络媒体编解码,把流媒体编解码数据传送给流媒体服务器300,流媒体服务器300接收来自于DVC的数据实时录制下来;流媒体服务器300是通过用于数字法庭的流媒体实时录制文件的生成装置100进行数据实时录制的。
如图5所示,所述流媒体服务器200包括:图3及图4中所示的用于数字法庭的流媒体实时录制文件的生成装置100;
用于数字法庭的流媒体实时录制文件的生成装置100包括:第一存储空间写入装置101,用于将第一文件区块chunk中的媒体数据存入至第一存储空间;第二存储空间写入装置102,用于将与所述第一文件区块chunk中的媒体数据对应的媒体数据信息存入至第二存储空间;流媒体实时录制文件写入装置103,用于当所述第一存储空间被存满时,将所述第一文件区块chunk中的媒体数据写入至流媒体实时录制文件,并且将所述第二存储空间内的媒体数据信息写入至流媒体实时录制文件。媒体实时录制文件的生成装置100的具体描述请见上述关于图3及图4的记载,在此不再赘述。
图6为本发明提供的数字法庭的流媒体实时录制文件的生成系统的另一结构示意图;所述的系统还包括:一个或者多个客户端400,用于从所述流媒体服务器获取并播放所述流媒体数据。
图7为本发明提供的数字法庭的流媒体实时录制文件的生成方法的又一结构示意图。
所述的方法包括以下步骤:
步骤S201,将ftyp写入流媒体实时录制文件;
步骤S202,将初始化的moov流媒体实时录制文件,moov中的每个子Box在文件中位置和大小固定不变;
步骤S203,将mdat的头写入流媒体实时录制文件;
步骤S204,申请一个固定大小的内存,用于存储chunk中的sample数据;
步骤S205,申请内存用于存储moov,moov保存一个chunk的媒体数据信息;
步骤S206,将一帧音视频数据缓存在文件区块chunk中;
步骤S207,将一帧音视频数据信息更新到内存moov中;
步骤S208,判断内存chunk是否满了,如果没有满,则进行步骤206;满了这进行步骤209;
步骤S209,将文件区块chunk中的音视频数据写入流媒体实时录制文件;
步骤S210,将moov中文件区块chunk的媒体数据信息写入流媒体实时录制文件;
步骤S211,将moov中的媒体数据信息清除;
步骤S212,更新文件中mdat头中的大小信息;
步骤S213,将内存chunk写指针设置到起始地址;
步骤S214,判断入流媒体实时录制文件操作是否结束。如果没有结束,则进行步骤206;若果结束则进行步骤215;
步骤S215,关闭文件,结束媒体实时录制文件写操作。
本发明提供的技术方案能够保证异常情况下的文件可以被客户端播放器播放,或者保证异常情况下的文件可以被流媒体服务器流化。这个方法的主要特点是在将媒体数据写入文件的同时,也实时地将moov媒体信息写入文件,从而避免了上述情况的发生。这个方法的主要特点是在将媒体数据写入文件的同时,也实时地将媒体信息(例如:moov媒体信息)写入文件,从而避免了上述情况的发生。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。