一种视频录制方法及系统转让专利

申请号 : CN201910335713.6

文献号 : CN110324643B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈燕鹏

申请人 : 网宿科技股份有限公司

摘要 :

本发明公开了一种视频录制方法及系统,其中,所述方法包括:实时读取目标视频的音频数据流,并将所述目标视频的视频画面转换为视频帧数据;监控所述目标视频的播放状态,当所述目标视频的播放状态表征直播暂停时,记录直播暂停时的起始时间节点,并在所述目标视频的播放状态表征直播恢复时,记录直播恢复时的终止时间节点;基于所述起始时间节点和所述终止时间节点,计算待插入的数据量,并在所述直播恢复时的音频数据流之前,插入与计算得到的所述数据量相等量的音频空包数据;将插入了所述音频空包数据的音频数据流与所述视频帧数据合成为录制后的视频文件。本申请提供的技术方案,能够确保录制后的视频文件保持音画同步。

权利要求 :

1.一种视频录制方法,其特征在于,所述方法包括:

实时读取目标视频的音频数据流,并将所述目标视频的视频画面转换为视频帧数据;

监控所述目标视频的播放状态,当所述目标视频的播放状态表征直播暂停时,记录直播暂停时的起始时间节点,并在所述目标视频的播放状态表征直播恢复时,记录直播恢复时的终止时间节点;

基于所述起始时间节点和所述终止时间节点,计算待插入的数据量,并在所述直播恢复时的音频数据流之前,插入与计算得到的所述数据量相等量的音频空包数据;

将插入了所述音频空包数据的音频数据流与所述视频帧数据合成为录制后的视频文件。

2.根据权利要求1所述的方法,其特征在于,监控所述目标视频的播放状态包括:监听播放所述目标视频的播放器的指定接口传递的播放状态参数;或者,监听播放系统发出的全局广播通知,以通过所述播放状态参数或者所述全局广播通知,判定所述目标视频当前的播放状态。

3.根据权利要求1所述的方法,其特征在于,在基于所述起始时间节点和所述终止时间节点,计算待插入的数据量之前,所述方法还包括:在所述目标视频的播放状态表征直播暂停时,将用于表征是否插入音频空包数据的全局变量的变量值设置为第一数值,以及在直播恢复时,检测所述全局变量当前的变量值;

相应地,在所述全局变量当前的变量值为所述第一数值的情况下,基于所述起始时间节点和所述终止时间节点,计算待插入的数据量,并在所述直播恢复时的音频数据流之前,插入与计算得到的所述数据量相等量的音频空包数据。

4.根据权利要求3所述的方法,其特征在于,在插入与计算得到的所述数据量相等量的音频空包数据之后,所述方法还包括:将所述全局变量的变量值设置为第二数值,所述第二数值用于表征当前无需插入音频空包数据。

5.根据权利要求1所述的方法,其特征在于,计算待插入的数据量包括:根据所述起始时间节点和所述终止时间节点计算暂停时长,并根据所述暂停时长和预设的音频参数,计算待插入的数据量;其中,所述预设的音频参数包括音频采样率、音频采样位深和音频通道数。

6.根据权利要求1所述的方法,其特征在于,所述方法还包括:

若所述目标视频从直播暂停起,直至视频录制结束,均处于直播暂停状态,记录所述视频录制结束时的时间节点,并根据所述视频录制结束时的时间节点和所述直播暂停时的起始时间节点,计算待补充的数据量;

在所述直播暂停时的音频数据流之后,填充与所述待补充的数据量相等量的音频空包数据。

7.根据权利要求1所述的方法,其特征在于,实时读取目标视频的音频数据流包括:创建音频采编模块,并将播放所述目标视频的播放器的音频参数赋值给所述音频采编模块,以使得所述音频采编模块根据赋值的所述音频参数实时读取目标视频的音频数据流。

8.根据权利要求7所述的方法,其特征在于,在创建音频采编模块之后,所述方法还包括:通过所述音频采编模块创建音频编码器,所述音频编码器用于将读取的所述目标视频的音频数据流编码为指定格式的音频文件。

9.根据权利要求7所述的方法,其特征在于,在创建音频采编模块之后,所述方法还包括:将创建的所述音频采编模块添加至预设的音频采编管理模块中,所述音频采编管理模块用于在视频录制开始时,启动当前管理的一个或者多个音频采编模块,以及在视频录制结束后,关闭所述一个或者多个音频采编模块,并清除视频录制过程中产生的临时文件。

10.根据权利要求7所述的方法,其特征在于,将所述目标视频的视频画面转换为视频帧数据包括:创建视频采编模块,并为所述视频采编模块设定视频采集参数,所述视频采集参数至少包括视频帧文件输出路径、视频采集帧率以及视频帧编码方式;

通过所述视频采编模块,按照所述视频采集参数将所述目标视频的视频画面重新绘制为二进制流,并将所述二进制流编码为视频帧数据。

11.根据权利要求10所述的方法,其特征在于,所述方法还包括:

创建合成管理模块,并在所述合成管理模块中设定超时时长;当所述音频采编模块完成音频编码或者所述视频采编模块完成视频编码后,统计另一种模块的编码时长,若统计的所述编码时长达到所述超时时长,停止当前的视频录制流程,并生成异常日志。

12.根据权利要求1所述的方法,其特征在于,所述方法还包括:

若在视频录制过程中,录制的时长大于或者等于预设时长阈值,或者设备的可用容量小于或者等于预设容量阈值,停止本次的视频录制流程,并将已录制的音频数据流和视频帧数据合成为录制后的视频文件。

13.根据权利要求1或12所述的方法,其特征在于,所述方法还包括:若在视频录制过程中接收到视频录制取消指令,并且视频录制的持续时长小于录制最低时长,停止本次的视频录制流程,并清空已录制的音频数据流和视频帧数据;

若在视频录制过程中接收到视频录制取消指令,并且视频录制的持续时长大于或者等于录制最低时长,停止本次的视频录制流程,并将已录制的音频数据流和视频帧数据合成为录制后的视频文件。

14.一种视频录制系统,其特征在于,所述系统包括:

音视频数据采集单元,用于实时读取目标视频的音频数据流,并将所述目标视频的视频画面转换为视频帧数据;

播放状态监控单元,用于监控所述目标视频的播放状态,当所述目标视频的播放状态表征直播暂停时,记录直播暂停时的起始时间节点,并在所述目标视频的播放状态表征直播恢复时,记录直播恢复时的终止时间节点;

空包数据插入单元,用于基于所述起始时间节点和所述终止时间节点,计算待插入的数据量,并在所述直播恢复时的音频数据流之前,插入与计算得到的所述数据量相等量的音频空包数据;

录制合成单元,用于将插入了所述音频空包数据的音频数据流与所述视频帧数据合成为录制后的视频文件。

15.根据权利要求14所述的系统,其特征在于,所述系统还包括:

全局变量设置单元,用于在所述目标视频的播放状态表征直播暂停时,将用于表征是否插入音频空包数据的全局变量的变量值设置为第一数值,以及在直播恢复时,检测所述全局变量当前的变量值;

相应地,所述空包数据插入单元,用于在所述全局变量当前的变量值为所述第一数值的情况下,基于所述起始时间节点和所述终止时间节点,计算待插入的数据量。

16.根据权利要求14所述的系统,其特征在于,所述空包数据插入单元,还用于若所述目标视频从直播暂停起,直至视频录制结束,均处于直播暂停状态,记录所述视频录制结束时的时间节点,并根据所述视频录制结束时的时间节点和所述直播暂停时的起始时间节点,计算待补充的数据量;以及在所述直播暂停时的音频数据流之后,填充与所述待补充的数据量相等量的音频空包数据。

说明书 :

一种视频录制方法及系统

技术领域

[0001] 本发明涉及互联网技术领域,特别涉及一种视频录制方法及系统。

背景技术

[0002] 随着视频直播技术的不断发展,越来越多的用户倾向于在视频直播平台中观看直播视频。直播视频具备较高的时效性,并且在观看直播视频的同时,用户还能够通过发表弹幕的方式,与主播或者其他用户实时沟通。
[0003] 目前,为了让错过直播时间的用户能够重新观看直播视频,当前的播放设备可以提供视频录制功能。具体地,针对直播视频的画面内容,可以通过屏幕截图的方式,将画面内容截取为视频帧。这样处理的好处在于,能够保留画面内容中附加的一些视觉特效。例如,可以保留直播过程中的答题、刷礼物等特效。而针对直播视频的音频内容,则可以读取直播视频的原始音频流。后续,通过对截取的视频帧和读取的原始音频流分别进行编码,从而可以合成为录制的视频文件。
[0004] 然而,按照上述方式录制的视频文件可能会存在音频和画面不同步的情况。原因在于,在直播过程中,很有可能会由于网络卡顿或者主播主动暂停直播,而导致视频画面出现暂停的情况。在这种情况下,通过屏幕截图的方式,能够还原出当时的暂停场景。然而,在直播暂停时,音频流会中断,这就导致,截取的视频帧对应的视频持续时间,与音频流对应的视频持续时间无法匹配。举例来说,假设直播视频一共持续了1小时,其中有10分钟处于暂停状态。那么截取的视频帧能够与1小时的时长相匹配,但是获取的音频流只有50分钟的时长。这样,后续在将视频帧与视频流合成为视频文件时,就会导致视频画面与音频无法同步的情况。
[0005] 由上可见,目前亟需一种能够保证音画同步的视频录制方法。

发明内容

[0006] 本申请的目的在于提供一种视频录制方法及系统,能够确保录制后的视频文件保持音画同步。
[0007] 为实现上述目的,本申请一方面提供一种视频录制方法,所述方法包括:实时读取目标视频的音频数据流,并将所述目标视频的视频画面转换为视频帧数据;监控所述目标视频的播放状态,当所述目标视频的播放状态表征直播暂停时,记录直播暂停时的起始时间节点,并在所述目标视频的播放状态表征直播恢复时,记录直播恢复时的终止时间节点;基于所述起始时间节点和所述终止时间节点,计算待插入的数据量,并在所述直播恢复时的音频数据流之前,插入与计算得到的所述数据量相等量的音频空包数据;将插入了所述音频空包数据的音频数据流与所述视频帧数据合成为录制后的视频文件。
[0008] 为实现上述目的,本申请另一方面还提供一种视频录制系统,所述系统包括:音视频数据采集单元,用于实时读取目标视频的音频数据流,并将所述目标视频的视频画面转换为视频帧数据;播放状态监控单元,用于监控所述目标视频的播放状态,当所述目标视频的播放状态表征直播暂停时,记录直播暂停时的起始时间节点,并在所述目标视频的播放状态表征直播恢复时,记录直播恢复时的终止时间节点;空包数据插入单元,用于基于所述起始时间节点和所述终止时间节点,计算待插入的数据量,并在所述直播恢复时的音频数据流之前,插入与计算得到的所述数据量相等量的音频空包数据;录制合成单元,用于将插入了所述音频空包数据的音频数据流与所述视频帧数据合成为录制后的视频文件。
[0009] 由上可见,本申请提供的技术方案,在实时读取目标视频的音频数据流时,可以监控目标视频的播放状态。当目标视频暂停播放时,可以记录起始时间节点,当目标视频恢复播放时,可以记录终止时间节点。这样,根据起始时间节点和终止时间节点,可以计算出在暂停过程中需要插入的音频空包数据的数据量。在目标视频恢复播放时,可以在音频数据流之前插入对应的音频空包数据。这样,插入了音频空包数据的音频数据流,可以与目标视频的视频画面相匹配,在目标视频暂停时,音频数据流可以播放无声的音频空包数据,从而可以确保录制后的视频保持音画同步。

附图说明

[0010] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0011] 图1是本发明实施方式中的视频录制方法示意图;
[0012] 图2是本发明实施方式中插入音频空包数据的第一示意图;
[0013] 图3是本发明实施方式中插入音频空包数据的第二示意图;
[0014] 图4是本发明实施方式中视频录制系统的功能模块示意图。

具体实施方式

[0015] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0016] 本申请提供一种视频录制方法,该方法可以应用于支持视频录制的设备中。该设备例如可以是用户使用的平板电脑、智能手机、台式电脑、智能可穿戴设备、笔记本电脑等电子设备,还可以是视频直播平台或者视频点播平台的业务服务器,还可以是与显示器配套使用的视频录制装置等。
[0017] 请参阅图1,所述视频录制方法可以包括以下多个步骤。
[0018] S1:实时读取目标视频的音频数据流,并将所述目标视频的视频画面转换为视频帧数据。
[0019] 在本实施方式中,所述目标视频可以包括直播视频,也可以包括点播视频。可以通过视频录制设备中并行的线程,分别进行音频采集和视频画面采集。具体地,当视频录制设备中的播放器初始化时,或者视频录制设备接收到视频录制的指令时,可以创建音频采编模块和视频采编模块。其中,所述音频采编模块的数量可以是一个或者多个,每个音频采编模块可以对应目标视频中的一条音轨,而视频采编模块的数量通常是一个。
[0020] 在本实施方式中,在创建音频采编模块之后,视频录制设备可以将播放所述目标视频的播放器的音频参数赋值给所述音频采编模块,以使得所述音频采编模块根据赋值的所述音频参数实时读取目标视频的音频数据流。其中,所述音频参数例如可以包括音频采样率、音频通道数、音频采样位数等参数。在实际应用中,所述目标视频的音频数据流可以是PCM(Pulse Code Modulation,脉冲编码调制)数据,该PCM数据可以是对目标视频的原始音频数据解码后得到的。视频录制设备接收到该PCM数据后,可以直接用于播放。通常而言。PCM数据的数据量往往较大,为了节省录制后的视频文件的容量,音频采编模块可以对该PCM数据进行编码。具体地,在创建所述音频采编模块后,还可以通过该音频采编模块创建音频编码器,该音频编码器可以用于将读取的所述目标视频的音频数据流编码为指定格式的音频文件。其中,所述指定格式可以是视频录制开始之前,由用户指定的,也可以是视频录制设备默认的格式。在实际应用中,所述指定格式例如可以是mp3格式,或者AAC(Advanced Audio Coding,高级音频编码)格式等。在创建音频编码器后,可以根据音频编码器的编码类型,启用对应的数据库。例如,对于mp3的编码类型而言,可以启用libmp3lame库。
[0021] 在本实施方式中,音频采编模块可以读取目标视频的PCM数据,音频编码器可以对读取的PCM数据编码后,生成指定格式的音频文件。在视频录制过程中,读取的PCM数据和生成的音频文件,可以存放于临时缓冲文件路径下。该临时缓冲文件路径,可以基于创建音频采编模块的系统时间生成。这样,通过创建音频采编模块的系统时间,可以统一表示用于存放PCM数据和音频文件的临时缓冲文件路径。
[0022] 在实际应用中,所述音频采编模块在创建之后,可以设置三个管理队列,这三个管理队列可以分别对应录制开始与停止动作、PCM数据存放以及音频编码。这样,在不同的录制阶段,可以对应启用不同的管理队列,从而保证录制过程按序进行。
[0023] 在一个实施方式中,由于音频采编模块的数量可能不止一个,为了有效地对多个音频采编模块进行同步管理,视频录制设备还可以预先创建一个音频采编管理模块。那么,在创建了一个或者多个音频采编模块后,可以将创建的音频采编模块添加至该预设的音频采编管理模块中。这样,该音频采编管理模块可以在视频录制开始时,启动当前管理的一个或者多个音频采编模块,以及在视频录制结束后,关闭所述一个或者多个音频采编模块,并清除视频录制过程中产生的临时文件,从而实现对音频采编模块的批量管理。
[0024] 在本实施方式中,在创建视频采编模块后,可以为所述视频采编模块设定视频采集参数,所述视频采集参数可以包括视频帧文件输出路径、视频分辨率、视频采集帧率、视频帧像素格式以及视频帧编码方式等多个参数。在实际应用中,所述视频分辨率可以是指定的视频分辨率,如果没有指定视频分辨率,可以直接将视频录制设备的屏幕尺寸作为默认的视频分辨率。此外,所述视频采集帧率可以是一个帧率范围。例如,一般设备的帧率范围通常在10至30帧之间,随着技术的进步,也可以达到10至60帧之间。如果用户输入的视频采集帧率处于该范围内,可以按照用户输入的视频采集帧率,对目标视频进行录制。而如果用户输入的视频采集帧率超过了该范围,那么可以默认取上限值或者下限值,从而保证视频录制流程能够正常进行。所述视频帧像素格式可以是32位的BGRA格式,当然,在实际应用中,可以按照需求灵活地选用其它的视频帧像素格式,并非限定于32位的BGRA格式。所述视频帧编码方式也可以多种多样,例如,可以是H.264编码格式,也可以是VP8、VP9编码格式,还可以是HEVC编码格式等等。
[0025] 需要是说明的是,可以根据实际应用场景更改所需的参数数量。例如,在视频录制过程中,频帧文件输出路径、视频采集帧率以及视频帧编码方式通常是必需的,而视频分辨率是可选的,如果没有指定视频分辨率,则可以认为视频分辨率与视频录制设备的屏幕分辨率相匹配。
[0026] 在本实施方式中,通过所述视频采编模块,可以按照所述视频采集参数将所述目标视频的视频画面重新绘制为二进制流,然后,可以进一步地将所述二进制流编码为视频帧数据。按照这种方式得到的视频帧数据,可以保留视频画面中的答题、刷礼物等各种视觉特效,从而能够完整地还原目标视频的画面内容。并且,当目标视频的画面暂停时,也可以录制下暂停的画面,从而最大化地还原出目标视频在直播时的真实场景。
[0027] S3:监控所述目标视频的播放状态,当所述目标视频的播放状态表征直播暂停时,记录直播暂停时的起始时间节点,并在所述目标视频的播放状态表征直播恢复时,记录直播恢复时的终止时间节点。
[0028] 在本实施方式中,在实时读取目标视频的音频数据流的过程中,如果目标视频在正常播放,那么音频采编模块便可以正常接收到PCM数据。而如果目标视频暂停播放,那么音频采编模块便无法接收到PCM数据,后续在目标视频恢复播放后,音频采编模块才能继续接收到PCM数据。为了保证读取的音频数据流能够与视频采编模块转换得到的视频帧数据保持同步,针对直播暂停的过程,可以在音频数据流中插入音频空包数据,从而使得插入了音频空包数据的音频数据流,能够与视频帧数据对齐时间轴。
[0029] 具体地,在目标视频的录制过程中,可以监控目标视频的播放状态。通常而言,目标视频的暂停播放状态,可以包含两种:主动暂停和被动暂停。其中,主动暂停可以指目标视频被视频播放者主动暂停,此时,视频播放者可以调用播放器的暂停接口,从而主动暂停正在播放的目标视频。该暂停端口被调用时,可以将表征直播暂停的播放状态参数传递至音频采编模块。这样,该暂停端口可以作为监听的指定端口,通过监听播放所述目标视频的播放器的指定接口传递的播放状态参数,从而可以确定目标视频是否被暂停直播。被动暂停可以指由于网络波动或者缓冲数据不足,导致播放器没有数据可播放而导致的直播暂停。在这种情况下,播放器所在的播放系统会发出表征直播暂停的全局广播通知。这样,通过监听该播放系统发出的全局广播通知,从而可以判定目标视频是否被暂停直播。
[0030] 这样,通过上述的方式,一旦目标视频暂停播放,音频采编模块便可以获知该暂停播放的状态。此时,音频采编模块可以记录直播暂停时的起始时间节点。后续,当音频采编模块能够再次接收到PCM数据时,则表示目标视频恢复了播放,此时,音频采编模块可以记录直播恢复时的终止时间节点。这样,由该终止时间节点和起始时间节点构成的时段,便可以是目标视频暂停播放的时段。
[0031] S5:基于所述起始时间节点和所述终止时间节点,计算待插入的数据量,并在所述直播恢复时的音频数据流之前,插入与计算得到的所述数据量相等量的音频空包数据。
[0032] 在本实施方式中,根据所述起始时间节点和所述终止时间节点,可以计算出目标视频的暂停时长,然后,可以根据所述暂停时长和预设的音频参数,计算待插入的数据量。其中,所述预设的音频参数,可以是音频采编模块创建时赋值的音频采样率、音频采样位深和音频通道数等音频参数。在一个实际的应用示例中,该待插入的数据量可以按照以下公式计算:
[0033] D=S×T×B/8×W
[0034] 其中,D表示所述待插入的数据量,S表示所述音频采样率,T表示所述暂停时长,B表示所述音频采样位深,W表示所述音频通道数。
[0035] 请参阅图2,在本实施方式中,计算出所述待插入的数据量后,可以在所述直播恢复时的读取的音频数据流之前,插入与计算得到的所述数据量相等量的音频空包数据。这样,图2所示,阴影部分为实际的音频数据流,而空白部分为目标视频暂停时插入的音频空包数据。该音频空包数据可以正常地被播放设备解析并播放,只不过播放时是无声的音频信息,并且播放的时长与视频直播的暂停时长一致,从而能够使得插入了音频空包数据的音频数据流与视频帧数据能够在时间轴上对应一致。
[0036] 在一个实施方式中,为了使得音频采编模块能够正确地对读取的音频数据流插入音频空包数据,可以预先在系统中设置一个用于表征是否插入音频空包数据的全局变量。该全局变量可以具备两种变量值。其中,变量值为第一数值时,可以表示当前需要插入音频空包数据;而变量值为第二数值时,可以表示当前无需插入音频空包数据。这样,在所述目标视频的播放状态表征直播暂停时,可以将该全局变量的变量值设置为第一数值。并且,每次音频采编模块接收到目标视频的音频数据流时,可以检测该全局变量当前的变量值。这样,当目标视频恢复播放时,音频采编模块可以检测所述全局变量当前的变量值。那么,由于该全局变量的变量值在之前直播暂停时被设置为第一数值,那么此时音频采编模块在检测到所述全局变量当前的变量值为所述第一数值的情况下,可以判定目前需要插入音频空包数据,因此,可以基于上述的起始时间节点和所述终止时间节点,计算待插入的数据量,并在所述直播恢复时的音频数据流之前,插入与计算得到的所述数据量相等量的音频空包数据。在插入音频空包数据之后,音频采编模块可以将所述全局变量的变量值设置为第二数值,这样,后续在读取到目标视频的音频数据流时,便无需插入音频空包数据,直至下一次直播暂停时,该全局变量的变量值又被设置为第一数值。
[0037] S7:将插入了所述音频空包数据的音频数据流与所述视频帧数据合成为录制后的视频文件。
[0038] 在本实施方式中,在得到插入了所述音频空包数据的音频数据流与转换的所述视频帧数据之后,视频录制设备可以将该音频数据流和视频帧数据合成为一份视频文件,从而得到录制后的视频文件。具体地,视频录制设备可以预先创建一个合成管理模块,该合成管理模块可用于合成录制后的视频文件。
[0039] 在一个应用示例中,合成管理模块可以读取完成转换的视频帧数据,并生成该视频帧数据的AVURLAsset对象。然后,可以将该AVURLAsset对象添加到AVMutableComposition对象的视频轨道中。接着,合成管理模块可以将插入视频空包数据的音频数据流和所述AVMutableComposition对象作为初始化参数,生成
AVAssetExportSession对象。最终,可以异步启动AVAssetExportSession导出会话,从而合成并导出录制后的视频文件。
[0040] 需要说明的是,如果在音频录制过程中,包含多个音轨的音频数据流,那么合成管理模块可以将这些音频数据流并轨,从而形成新音轨的音频数据流。后续,便可以将新音轨的音频数据流和所述AVMutableComposition对象作为初始化参数生成AVAssetExportSession对象。
[0041] 在一个实施方式中,所述合成管理模块还可以对录制过程中的各项机制进行管理。这些机制可以包括超时机制、结束机制等。其中,超时机制可以指音频采编模块或者视频采编模块超出了预先设置的采编时长。具体地,由于音频采编和视频采编是在不同的线程中并行完成的,那么两者通常会具备完成的先后关系。例如,音频采编由于处理的数据量较少,可能会最先完成。而视频采编则由于需要处理的数据量过多,会稍晚一些完成。在采编过程中,有时候可能会由于一些不可控的原因,导致采编出现异常,这些异常会增加采编过程所耗费的时长。在这种情况下,可以在所述合成管理模块中设定超时时长,并且当所述音频采编模块或者所述视频采编模块中的一种模块完成音频编码或者视频编码后,统计另一种模块的编码时长。例如,在音频编码模块完成音频编码之后,可以开始统计视频编码模块的编码时长。若统计的所述编码时长达到所述超时时长,则表明编码过程中可能出现了异常,此时可以停止当前的视频录制流程,并生成异常日志。后续,可以根据用户的指令,重新开始音视频的采编过程。这样处理的目的在于,能够及时停止耗时过长的采编过程,避免无休止地等待。
[0042] 在本实施方式中,结束机制可以包含正常结束、异常结束以及取消。其中,正常结束可以指视频录制结束时,没有超过预设时长阈值,并且设备的可用容量也大于或者等于预设容量阈值;还可以指在视频录制时长没有超过预设时长阈值,并且设备的可用容量也大于或者等于预设容量阈值的情况下,接收到用户输入的结束录制的指令。在这种情况下,当视频录制结束后,可以对完成录制的音视频数据进行处理,并合成录制后的视频文件。
[0043] 异常结束则可以指视频录制的时长超过了上述的预设时长阈值,或者设备的可用容量小于或者等于上述的预设容量阈值,在这种情况下,录制被迫结束,此时可以停止本次的视频录制流程,并将已录制的音频数据流和视频帧数据合成为录制后的视频文件。
[0044] 取消则可以指用户主动放弃本次的录制过程,通常而言,若在视频录制过程中接收到视频录制取消指令,并且视频录制的持续时长小于上述的录制最低时长,则可以停止本次的视频录制流程,并清空已录制的音频数据流和视频帧数据。在这种情况下,可以认为录制视频的指令是用户的误操作,那么在录制视频的指令后短时间接收到用户的取消指令,则可以放弃本次的视频录制过程,并且对已经采集的数据也不做处理,直接清空。而如果在视频录制过程中接收到视频录制取消指令,并且视频录制的持续时长大于或者等于录制最低时长时,那么可以停止本次的视频录制流程,但需要将已录制的音频数据流和视频帧数据合成为录制后的视频文件。这样处理的原因在于,录制的持续时长已经达到录制最低时长,表明用户可能只是想录制一小部分目标视频的内容。因此,在这种情况下,在停止本次录制流程后,需要将已经采集的数据合成为录制后的视频文件。
[0045] 在一个应用场景中,可能在目标视频暂停播放后,一直到视频录制结束,目标视频都没有恢复播放。在这种情况下,由于不存在恢复播放的时机,因此无法按照上述的方式插入音频空包数据。鉴于此,请参阅图3,在一个实施方式中,若所述目标视频从直播暂停起,直至视频录制结束,均处于直播暂停状态,则可以记录所述视频录制结束时的时间节点,并根据所述视频录制结束时的时间节点和所述直播暂停时的起始时间节点,计算待补充的数据量。此时,可以在所述直播暂停时的音频数据流之后,填充与所述待补充的数据量相等量的音频空包数据。这样,直播暂停后的时段,均可以填充音频空包数据,直至视频录制结束为止。
[0046] 请参阅图4,本申请还提供一种视频录制系统,所述系统包括:
[0047] 音视频数据采集单元,用于实时读取目标视频的音频数据流,并将所述目标视频的视频画面转换为视频帧数据;
[0048] 播放状态监控单元,用于监控所述目标视频的播放状态,当所述目标视频的播放状态表征直播暂停时,记录直播暂停时的起始时间节点,并在所述目标视频的播放状态表征直播恢复时,记录直播恢复时的终止时间节点;
[0049] 空包数据插入单元,用于基于所述起始时间节点和所述终止时间节点,计算待插入的数据量,并在所述直播恢复时的音频数据流之前,插入与计算得到的所述数据量相等量的音频空包数据;
[0050] 录制合成单元,用于将插入了所述音频空包数据的音频数据流与所述视频帧数据合成为录制后的视频文件。
[0051] 在一个实施方式中,所述系统还包括:
[0052] 全局变量设置单元,用于在所述目标视频的播放状态表征直播暂停时,将用于表征是否插入音频空包数据的全局变量的变量值设置为第一数值,以及在直播恢复时,检测所述全局变量当前的变量值;
[0053] 相应地,所述空包数据插入单元,用于在所述全局变量当前的变量值为所述第一数值的情况下,基于所述起始时间节点和所述终止时间节点,计算待插入的数据量。
[0054] 在一个实施方式中,所述空包数据插入单元,还用于若所述目标视频从直播暂停起,直至视频录制结束,均处于直播暂停状态,记录所述视频录制结束时的时间节点,并根据所述视频录制结束时的时间节点和所述直播暂停时的起始时间节点,计算待补充的数据量;以及在所述直播暂停时的音频数据流之后,填充与所述待补充的数据量相等量的音频空包数据。
[0055] 由上可见,本申请提供的技术方案,在实时读取目标视频的音频数据流时,可以监控目标视频的播放状态。当目标视频暂停播放时,可以记录起始时间节点,当目标视频恢复播放时,可以记录终止时间节点。这样,根据起始时间节点和终止时间节点,可以计算出在暂停过程中需要插入的音频空包数据的数据量。在目标视频恢复播放时,可以在音频数据流之前插入对应的音频空包数据。这样,插入了音频空包数据的音频数据流,可以与目标视频的视频画面相匹配,在目标视频暂停时,音频数据流可以播放无声的音频空包数据,从而可以确保录制后的视频保持音画同步。
[0056] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0057] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。