专利名称:一种无缝文件采集方法及系统的制作方法
技术领域:
本发明涉及视音频文件采集技术,具体涉及一种针对视音频文件的无缝采集方法 及系统。
背景技术:
视音频文件采集系统被广泛应用于广电节目录制、视频网站内容制作、安保视频 监控等领域。该系统主要作用是将视音频信号编码成文件后保存起来。由于视音频文件的 存储量一般比较大,这种大文件在写入数据的过程中需要较长的时间,而如果计算机系统 在此过程中出现瞬间不稳定因素的干扰,就会发生数据写入过程的短暂停顿并造成数据丢 失。因此,在视音频文件的保存过程中,为了避免单个文件过大,往往会将视音频数据按照 时间先后顺序分成多段数据,分别写入到多个文件中。但在文件切换的过程中,往往会有部 分视音频数据在编码器切换的空隙被丢弃,造成数据丢失。虽然这种数据丢失的持续时间 很短暂,但是有可能包含非常有价值的信息,一旦这种有价值的数据信息丢失,会给用户造 成很大的损失。中国专利申请03150253. 9公开了一种“视音频编辑系统中避免采集或录制数据 丢失的方法”,该方法在数据采集和节目录制过程中,先将采集或要录制的数据分别存储到 计算机内存中由视音频编辑软件预先开设的采集数据缓存区和录制数据缓存区内,然后再 将对应缓存区内的数据写入计算机硬盘规定的数据区或输出到录制设备中,避免了因计算 机系统瞬间不稳定造成的数据丢失。但是,由于将视音频数据分段后,视频流和音频流很 可能出现不同步的现象。目前主流的编码器在同时编码音频和视频流时,需要将编码后的 两个流交织后写入到文件中,如果生成的文件中相邻的两个数据流出现不同步的情况,当 播放器播放这种文件时,为了等待另一个流同步,需要缓冲非常多的数据,造成内存占用过 多,磁盘读写频繁,随机定位慢,甚至音视频不协调等一系列问题。为了避免这种情况出现, 主流的编码器一般都要求输入的两个数据流应保持基本同步,如果超出同步的控制范围, 时间戳超前的流中的部分数据会被编码器主动丢弃,以缩小差距,严重的甚至导致编码器 拒绝后续数据的编码请求,导致数据丢失。可见,如果将不同步的视频流和音频流输入编码 器,在编码器内部同样会出现数据丢失的现象,无法做到真正的文件无缝采集。
发明内容
本发明的目的在于针对现有技术中视音频文件采集时容易造成数据丢失的缺陷, 提供一种无缝文件采集方法及系统,从而保证视音频文件采集的完整性。本发明的技术方案如下一种无缝文件采集方法,包括如下步骤(1)在编码器前端设置一个数据缓存池,将视音频数据按时间顺序存入缓存池;(2)打开数据缓存池的出口,使未编码的视音频数据经过缓存池同步输出,进入编 码器进行文件编码;(3)当需要切换输出文件时,系统发出文件切换消息;
(4)再次同步缓存池中的视音频数据,使输出给编码器的视频流总长度等于音频 流总长度,然后关闭数据缓存池的出口 ;(5)编码器将其内部已完成编码的数据生成一个文件,输出到硬盘的目标位置;(6)返回步骤( 进行重复操作,直至完成所有视音频数据的采集。进一步,如上所述的无缝文件采集方法,步骤(1)中设置数据缓存池的方式是在 计算机系统的内存中划分一块缓存区域,将该缓存区域与编码器相关联,形成数据经该缓 存区域进入编码器的输入路径;或者,在计算机系统的硬盘上建立一个临时文件,将缓存映 射到硬盘的临时文件中,将该临时文件与编码器相关联,形成数据经该临时文件进入编码 器的输入路径。进一步,如上所述的无缝文件采集方法,步骤O)中所述的打开数据缓存池的出 口为启动从缓存池中取数据并输送到编码器的数据读取线程;步骤中所述的关闭数 据缓存池的出口为停止上述数据读取线程。进一步,如上所述的无缝文件采集方法,在步骤( 和步骤(4)中对视音频数据进 行同步的方式是选择一个参考时钟,在生成视频数据流和音频数据流时对每一帧数据分 别加上一个时间戳,通过对照视频数据流和音频数据流的时间戳,对两个数据流的输送速 度进行调整,以实现视音频数据的同步输送。一种无缝文件采集系统,包括编码器,用于对视音频数据进行文件编码,并输出形成目标文件;数据缓存池,与编码器的输入端连接,用于暂时存储未编码的视音频数据,并将数 据输送给编码器;数据同步模块,与数据缓存池连接,用于对数据缓存池中的视音频数据流进行先 后两次同步控制;缓存池开关模块,设置在数据缓存池的出口与编码器的输入端之间,用于控制未 编码的视音频数据经过缓存池向编码器的输送。进一步,如上所述的无缝文件采集系统,其中,所述的数据缓存池为计算机系统内 存中的一块缓存区域,通过设置数据经该缓存区域进入编码器的输入路径,形成缓存区域 与编码器的关联关系;或者,所述的数据缓存池为计算机系统硬盘中的一个临时文件所构 成的虚拟内存。进一步,如上所述的无缝文件采集系统,其中,所述的数据同步模块根据一个参考 时钟,对生成的视频数据流和音频数据流的每一帧数据分别加上一个时间戳,通过对照视 频数据流和音频数据流的时间戳,对两个数据流的输送速度进行调整,以实现视音频数据 的同步输送。进一步,如上所述的无缝文件采集系统,其中,所述的缓存池开关模块为一个数据 读取线程,通过启动和停止该数据读取线程,实现编码器从缓存池中读取视音频数据的控 制。本发明的有益效果如下本发明通过在编码器的前端增设一个数据缓存池,使视 音频数据经过缓存池后再进入编码器,并通过打开和关闭缓存池的出口来控制输入编码器 的视音频数据量;同时在每一阶段编码的过程中,前后两次对缓存池中的视音频数据流进 行同步控制,使送给编码器的视频流总长度等于音频流总长度,实现了真正意义上的视音频文件的无缝采集,防止数据的丢失,保证了视音频文件采集的完整性。
图1为本发明具体实施方式
中的方法流程图;图2为本发明具体实施方式
中的系统结构示意图。
具体实施例方式下面结合附图和实施例对本发明进行详细的描述。如图1所示,本发明所提供的无缝文件采集方法,包括如下步骤步骤S01,在编码器前端设置一个数据缓存池,将视音频数据按时间顺序存入缓存 池;步骤S02,打开数据缓存池的出口,启动数据读取线程,使未编码的视音频数据经 过缓存池同步输出,进入编码器进行文件编码;步骤S03,当需要切换输出文件时,系统发出文件切换消息;步骤S04,再次同步缓存池中的视音频数据,使送给编码器的视频流总长度等于音 频流总长度,然后关闭数据缓存池的出口,停止数据读取线程,让未编码的数据在缓存池中 排队;步骤S05,编码器将其内部已完成编码的数据生成一个文件,输出到硬盘的目标位 置;步骤S06,返回步骤S02进行重复操作,直至完成所有视音频数据的采集。在上述方案中,为了达到无缝采集的目的,本发明在编码器前端增加了 一个数据 缓存池,所述的数据缓存池必须是一块可直接操作的内存区域,但是这里所述的内存是操 作系统所提供的虚拟内存,虚拟内存可以是实际物理内存中的一块缓存区域,也可以映射 到硬盘上的一个文件中,通过设置数据经该虚拟内存进入编码器的输入路径,形成缓存区 域(或临时文件)与编码器的关联关系。由于本系统中所缓存的是无压缩的视音频数据, 其数据量巨大,因此当运行本系统的计算机物理内存较小时,可将缓存映射到硬盘上的一 个临时文件中,使用硬盘空间来缓解内存不足的缺陷。由于视音频信号先经过缓存池,再进入编码器进行文件编码工作,当同时有音频 流和视频流时,就需要做好音视频同步工作,让编码器接收到的两个流的时间戳尽量一致。 从技术上来讲,视音频数据进行同步的最佳方式就是基于时间戳的调整方式,首先选择一 个参考时钟,在生成视频数据流和音频数据流时对每一帧数据分别加上一个时间戳,通过 对照视频数据流和音频数据流的时间戳,对两个数据流的输送速度进行调整,以实现视音 频数据的同步输送。本发明的关键之处在于对视频数据流和音频数据流进行两次同步,第一次发生在 步骤S02中,即视音频信号进入编码器之前先进行同步;第二次发生在步骤S04中,即当编 码器需要切换输出文件时,系统对视音频信号数据再做一次同步,使得送给编码器的视频 流总长度等于音频流总长度,然后系统暂时关闭缓存池的出口,让未编码的数据在缓存池 中排队,这时再让编码器切换输出文件。再次打开缓存池出口,将剩余数据继续推送给编码 器进行处理,真正做到无缝采集。上述步骤中做两次视音频同步非常重要,否则编码器内部会丢失数据,无法做到真正的无缝采集。为实现上述无缝文件采集方法,本发明进一步提供了相应系统的结构组成,如图2 所示,具体包括编码器,用于对视音频数据进行文件编码,并输出形成目标文件;数据缓存池,与编码器的输入端连接,用于暂时存储未编码的视音频数据,并将数 据输送给编码器;在具体实施方式
中,数据缓存池为计算机系统内存中的一块缓存区域,通 过设置数据经该缓存区域进入编码器的输入路径,形成缓存区域与编码器的关联关系;或 者,数据缓存池为计算机系统硬盘中的一个临时文件所构成的虚拟内存;数据同步模块,与数据缓存池连接,用于对数据缓存池中的视音频数据流进行先 后两次同步控制;具体的控制方式是,根据一个参考时钟,对生成的视频数据流和音频数据 流的每一帧数据分别加上一个时间戳,通过对照视频数据流和音频数据流的时间戳,对两 个数据流的输送速度进行调整,以实现视音频数据的同步输送;同步控制需要进行两次,第 一次是在视音频信号进入编码器之前,第二次是在当编码器需要切换输出文件时;缓存池开关模块,设置在数据缓存池的出口与编码器的输入端之间,为一个从缓 存池中取数据并输送到编码器的数据读取线程,通过启动和停止该数据读取线程,控制未 编码的视音频数据经过缓存池向编码器的输送。在该数据读取线程正常运行期间,会调用 数据同步模块对所有传送的视音频数据进行上述方法中步骤S02所述的第一次同步,当关 闭该数据读取线程时,线程会在退出前调用数据同步模块进行上述方法中步骤S04所述的 第二次同步。上述系统通过在编码器前端增加了一个数据缓存池,使视音频信号先经过缓存 池,再进入编码器进行文件编码工作,通过数据同步模块对数据缓存池中的视音频数据流 进行先后两次同步控制,保证了编码器内部编码时不会丢失数据,从而实现了文件的无缝 采集,缓存池开关模块对缓存池的出口进行控制,保证了进入编码器的数据量。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精 神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围 之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种无缝文件采集方法,包括如下步骤(1)在编码器前端设置一个数据缓存池,将视音频数据按时间顺序存入缓存池;(2)打开数据缓存池的出口,使未编码的视音频数据经过缓存池同步输出,进入编码器 进行文件编码;(3)当需要切换输出文件时,系统发出文件切换消息;(4)再次同步缓存池中的视音频数据,使输出给编码器的视频流总长度等于音频流总 长度,然后关闭数据缓存池的出口 ;(5)编码器将其内部已完成编码的数据生成一个文件,输出到硬盘的目标位置;(6)返回步骤( 进行重复操作,直至完成所有视音频数据的采集。
2.如权利要求1所述的无缝文件采集方法,其特征在于步骤(1)中设置数据缓存池 的方式是在计算机系统的内存中划分一块缓存区域,将该缓存区域与编码器相关联,形成 数据经该缓存区域进入编码器的输入路径。
3.如权利要求1所述的无缝文件采集方法,其特征在于步骤(1)中设置数据缓存池 的方式是在计算机系统的硬盘上建立一个临时文件,将缓存映射到硬盘的临时文件中,将 该临时文件与编码器相关联,形成数据经该临时文件进入编码器的输入路径。
4.如权利要求1或2或3所述的无缝文件采集方法,其特征在于步骤O)中所述的 打开数据缓存池的出口为启动从缓存池中取数据并输送到编码器的数据读取线程;步骤 (4)中所述的关闭数据缓存池的出口为停止上述数据读取线程。
5.如权利要求4所述的无缝文件采集方法,其特征在于在步骤(2)和步骤中对 视音频数据进行同步的方式是选择一个参考时钟,在生成视频数据流和音频数据流时对 每一帧数据分别加上一个时间戳,通过对照视频数据流和音频数据流的时间戳,对两个数 据流的输送速度进行调整,以实现视音频数据的同步输送。
6.一种无缝文件采集系统,包括编码器,用于对视音频数据进行文件编码,并输出形成目标文件;数据缓存池,与编码器的输入端连接,用于暂时存储未编码的视音频数据,并将数据输 送给编码器;数据同步模块,与数据缓存池连接,用于对数据缓存池中的视音频数据流进行同步控制;缓存池开关模块,设置在数据缓存池的出口与编码器的输入端之间,用于控制未编码 的视音频数据经过缓存池向编码器的输送。
7.如权利要求6所述的无缝文件采集系统,其特征在于所述的数据缓存池为计算机 系统内存中的一块缓存区域,通过设置数据经该缓存区域进入编码器的输入路径,形成缓 存区域与编码器的关联关系。
8.如权利要求6所述的无缝文件采集系统,其特征在于所述的数据缓存池为计算机 系统硬盘中的一个临时文件所构成的虚拟内存。
9.如权利要求6或7或8所述的无缝文件采集系统,其特征在于所述的数据同步模 块根据一个参考时钟,对生成的视频数据流和音频数据流的每一帧数据分别加上一个时间 戳,通过对照视频数据流和音频数据流的时间戳,对两个数据流的输送速度进行调整,以实 现视音频数据的同步输送。
10.如权利要求6或7或8所述的无缝文件采集系统,其特征在于所述的缓存池开关 模块为一个数据读取线程,通过启动和停止该数据读取线程,实现编码器从缓存池中读取 视音频数据的控制。
全文摘要
本发明涉及视音频文件采集技术,具体涉及一种针对视音频文件的无缝采集方法及系统。该方法在编码器前端设置一个数据缓存池,将视音频数据按时间顺序存入缓存池;打开数据缓存池的出口,使未编码的视音频数据经过缓存池同步输出,进入编码器进行文件编码;当需要切换输出文件时,系统发出文件切换消息;再次同步缓存池中的视音频数据,使送给编码器的视频流总长度等于音频流总长度,然后关闭数据缓存池的出口;编码器将其内部已完成编码的数据生成一个文件,输出到硬盘的目标位置;重新打开缓存池出口重复编码操作,直至完成所有视音频数据的采集。本发明能够做到编码时不丢失数据,从而保证视音频文件采集的完整性。
文档编号H04N5/222GK102098423SQ200910242620
公开日2011年6月15日 申请日期2009年12月10日 优先权日2009年12月10日
发明者周铭慧, 孔彦锋, 时杰, 王常波, 白东岩 申请人:北京北大方正电子有限公司, 北大方正集团有限公司