一种音视频剪辑方法及装置转让专利

申请号 : CN201611105166.5

文献号 : CN106534971B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 许斌盛

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本申请提供了一种音视频剪辑方法,包括:获取待剪辑拼接的两个音视频片段,该两个音视频片段的编码格式相同;在每一音视频片段中,确定待进行滤镜处理的GOP组,该GOP组包含至少一个GOP;分别对各音视频片段中确定的待进行滤镜处理的GOP组进行解码、滤镜处理以及编码;将完成编码的两个音视频片段进行拼接,以使得两个音视频片段在时间轴中连续。该方法中,在对音视频剪辑添加滤镜处理的过程中,仅需要对待剪辑连接的每个音视频片段中处于滤镜处理范围内的几个GOP中对应的图像帧做过渡效果,相应的,只需要做过渡效果的图像帧所在GOP做一次解编码,无需对整段视频进行二次编码,设备CPU的只需对较少的视频进行二次编码,降低CPU负载和生成视频的时间。

权利要求 :

1.一种音视频剪辑方法,其特征在于,包括:

获取待剪辑拼接的两个音视频片段,所述两个音视频片段的编码格式相同;

在每一所述音视频片段中,确定待进行滤镜处理的图像群组GOP组,所述GOP组包含至少一个GOP;

分别对各所述音视频片段中确定的待进行滤镜处理的GOP组进行解码、滤镜处理以及编码;

将完成编码的两个音视频片段进行拼接,以使得所述两个音视频片段在时间轴中连续。

2.根据权利要求1所述的方法,其特征在于,所述两个音视频片段属于同一视频流,所述获取待剪辑拼接的两个音视频片段,包括:依据接收的与所述视频流对应的剪辑时戳,以GOP为单位从所述视频流中选择与所述剪辑时戳匹配的位置;

以所述位置为剪切位置,从所述视频流中获取所述两个音视频片段。

3.根据权利要求1所述的方法,其特征在于,所述两个音视频片段属于不同视频流,所述获取待剪辑拼接的两个音视频片段,包括:依据接收的与第一视频流对应的剪辑时戳,以GOP为单位从第一视频流中选择与第一视频流对应的剪辑时戳匹配的位置作为剪切位置,从所述第一视频流中获取第一音视频片段;

依据接收的与第二视频流对应的剪辑时戳,以GOP为单位从第二视频流中选择与第二视频流对应的剪辑时戳匹配的位置作为剪切位置,从所述第二视频流中获取第二音视频片段。

4.根据权利要求2所述的方法,其特征在于,所述依据接收的剪辑时戳,以GOP为单位从所述视频流中选择与所述剪辑时戳匹配的位置,包括:依次读取所述视频流中的图像帧,在所述视频流中选择与所述剪辑时戳中的起始时戳相应的第一图像帧,在所述视频流中选择与所述剪辑时戳中的结束时戳相应的第二图像帧;

将所述第一图像帧所属的GOP作为所述音视频片段剪辑对应的起始GOP、将所述第二图像帧所属的GOP作为所述音视频片段剪辑对应的结束GOP。

5.根据权利要求2所述的方法,其特征在于,所述在每一所述音视频片段中,确定待进行滤镜处理的图像群组GOP组,包括:依据预设的滤镜时长以及一个GOP时长,分析得到每一所述音视频片段中不小于所述滤镜时长所需GOP的个数;

在每一所述音视频片段的交接处,选择所述个数的GOP组成GOP组。

6.根据权利要求5所述的方法,其特征在于,所述音视频片段在时间轴的排序在前时,所述在每一所述音视频片段的交接处,选择所述个数的GOP组成GOP组,包括:按照所述视频流的时间轴顺序,依次读取所述音视频片段的图像帧,判断当前帧的时戳是否大于所述音视频片段的结束时戳与所述个数的GOP时间总长度之差,得到第一判断结果;判断所述当前帧是否为其所属的GOP的关键帧,得到第二判断结果;

基于所述第一判断结果表征当前帧的时戳大于所述音视频片段的结束时戳与所述个数的GOP时间总长度之差,且所述第二判断结果表征当前帧为关键帧,则确定所述当前帧所属的GOP为所述交接处的起始GOP;

在所述音视频片段中从所述起始GOP开始获取所述个数的GOP,得到所述GOP组。

7.根据权利要求6所述的方法,其特征在于,对音视频片段中确定的待进行滤镜处理的GOP组进行解码、滤镜处理以及编码,包括:按照所述视频流的时间轴顺序,依次对所述音视频片段的所述GOP组进行解码,得到第一解码数据;

在依次读取所述音视频片段的图像帧过程中,依据预设的滤镜时长,判断得到所述音视频片段的所述GOP组中的当前帧为过渡帧,对所述第一解码数据中从当前帧开始的剩余帧进行淡出滤镜处理;

将经过淡出滤镜处理的所述GOP组进行编码,将得到的第一编码数据写入所述音视频片段对应的视频包中。

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

依据所述第一编码数据,更新所述视频包的参数信息。

9.根据权利要求根据权利要求7所述的方法,其特征在于,所述将得到的第一编码数据写入所述音视频片段对应的视频包中,包括:依据预设的时戳数据对应关系,确定编码得到第一编码数据对应的时戳;

按照时戳顺序,将所述第一编码数据写入所述视频包中。

10.根据权利要求5所述的方法,其特征在于,所述音视频片段在时间轴的排序在后时,所述在每一所述音视频片段的交接处,选择所述个数的GOP组成GOP组,包括:按照所述视频流的时间轴顺序,从所述音视频片段的起始位置开始,选择所述个数的GOP组成GOP组。

11.根据权利要求10所述的方法,其特征在于,对音视频片段中确定的待进行滤镜处理的GOP组进行解码、滤镜处理以及编码,包括:按照所述视频流的时间轴顺序,依次对所述音视频片段的所述GOP组进行解码,得到第二解码数据;

在依次读取所述音视频片段的图像帧过程中,从所述音视频片段第一帧开始至与预设的滤镜时长对应时戳的图像帧结束,对所述第二解码数据进行淡入滤镜处理;

将经过淡入滤镜处理的所述GOP组进行编码,将得到的第二编码数据写入所述音视频片段对应的视频包中。

12.根据权利要求1所述的方法,其特征在于,所述获取待剪辑连接的两个音视频片段之前还包括:分析运行平台的类型;

根据平台类型配置相应的硬件编解码器参数。

13.一种音视频剪辑装置,其特征在于,包括:

获取单元,用于获取待剪辑拼接的两个音视频片段,所述两个音视频片段的编码格式相同;

分析单元,用于在每一所述音视频片段中,确定待进行滤镜处理的图像群组GOP组,所述GOP组包含至少一个GOP;

处理单元,用于分别对各所述音视频片段中确定的待进行滤镜处理的GOP组进行解码、滤镜处理以及编码;

拼接单元,用于将完成编码的两个音视频片段进行拼接,以使得所述两个音视频片段在时间轴中连续。

说明书 :

一种音视频剪辑方法及装置

技术领域

[0001] 本发明涉及音视频处理技术,尤其涉及一种音视频剪辑方法及装置。

背景技术

[0002] 音视频处理中常见的一种处理方式为将多个视频片段拼接生成新视频,在视频片段之间增加滤镜效果,如淡入淡出效果,提高用户的观看体验。
[0003] 传统的视频剪辑添加滤镜效果时,一般采用ffmpeg命令,但是采用该命令通常需要对视频源全部进行二次编码,使之转码成统一的编码格式再加滤镜效果进行拼接后生成新视频。
[0004] 而在设备CPU(central processing unit,中央处理器)资源受限的情况下,这种对整段视频进行二次编码的做法会消耗大量时间,导致很差的用户体检。

发明内容

[0005] 有鉴于此,本发明实施例希望提供一种音视频剪辑方法,至少解决了现有技术存在的问题。
[0006] 本发明实施例的技术方案是这样实现的:
[0007] 一种音视频剪辑方法,包括:
[0008] 获取待剪辑拼接的两个音视频片段,所述两个音视频片段的编码格式相同;
[0009] 在每一所述音视频片段中,确定待进行滤镜处理的图像群组GOP组,所述GOP组包含至少一个GOP;
[0010] 分别对各所述音视频片段中确定的待进行滤镜处理的GOP组进行解码、滤镜处理以及编码;
[0011] 将完成编码的两个音视频片段进行拼接,以使得所述两个音视频片段在时间轴中连续。
[0012] 一种音视频剪辑装置,包括:
[0013] 获取单元,用于获取待剪辑拼接的两个音视频片段,所述两个音视频片段的编码格式相同;
[0014] 分析单元,用于在每一所述音视频片段中,确定待进行滤镜处理的图像群组GOP组,所述GOP组包含至少一个GOP;
[0015] 处理单元,用于分别对各所述音视频片段中确定的待进行滤镜处理的GOP组进行解码、滤镜处理以及编码;
[0016] 拼接单元,用于将完成编码的两个音视频片段进行拼接,以使得所述两个音视频片段在时间轴中连续。
[0017] 与现有技术相比,本申请的有益效果为:
[0018] 在本申请中,在对音视频剪辑添加滤镜处理的过程中,仅需要对待剪辑连接的每个音视频片段中处于滤镜处理范围内的几个GOP中对应的图像帧做过渡效果,相应的,只需要做过渡效果的图像帧所在GOP做一次解编码,无需对整段视频进行二次编码,设备CPU的只需对较少的视频进行二次编码,降低CPU负载和生成视频的时间。

附图说明

[0019] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0020] 图1为本申请提供的一种音视频剪辑方法实施例1的流程图;
[0021] 图2为本申请提供的一种音视频剪辑方法实施例2的流程图;
[0022] 图3为本申请提供的一种音视频剪辑方法实施例2中游戏设置页面示意图;
[0023] 图4为本申请提供的一种音视频剪辑方法实施例2中开始游戏页面示意图;
[0024] 图5为本申请提供的一种音视频剪辑方法实施例2中游戏结束页面的一示意图;
[0025] 图6为本申请提供的一种音视频剪辑方法实施例2中游戏结束页面的另一示意图;
[0026] 图7为本申请提供的一种音视频剪辑方法实施例3的流程图;
[0027] 图8为本申请提供的一种音视频剪辑方法实施例4的流程图;
[0028] 图9为本申请提供的一种音视频剪辑方法实施例4中视频流剪辑示意图;
[0029] 图10为本申请提供的一种音视频剪辑方法实施例5的流程图;
[0030] 图11为本申请提供的一种音视频剪辑方法实施例6的流程图;
[0031] 图12为本申请提供的一种音视频剪辑方法实施例6中音视频片段的一种GOP组示意图;
[0032] 图13为本申请提供的一种音视频剪辑方法实施例6中音视频片段的另一种GOP组示意图;
[0033] 图14为本申请提供的一种音视频剪辑方法实施例7的流程图;
[0034] 图15为本申请提供的一种音视频剪辑方法实施例7中音视频片段的GOP组示意图;
[0035] 图16为本申请提供的一种音视频剪辑方法实施例8的流程图;
[0036] 图17为本申请提供的一种音视频剪辑方法实施例9的流程图;
[0037] 图18为本申请提供的一种音视频剪辑方法实施例10的流程图;
[0038] 图19为本申请提供的一种音视频剪辑装置实施例1的结构示意图。

具体实施方式

[0039] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0040] 对本申请中涉及的专业名称进行解释:
[0041] 视频剪辑:对视频源进行非线性编辑的软件,属多媒体制作软件范畴。软件通过对加入的图片、背景音乐、特效、场景等素材与视频进行重混合,对视频源进行切割、合并,通过二次编码,生成具有不同表现力的新视频。
[0042] 剪辑过渡:在视频剪辑时,对2个视频片段之间增加例如淡出淡入的滤镜效果,使2个视频片段的衔接不至过于突兀。
[0043] GOP(Group of Pictures,图像群组),一个GOP就是一组连续的图像,表示I-Frame(帧)与I-Frame之间的图像排列。
[0044] I帧(intra picture,帧内编码帧),I帧通常是每个GOP的第一个帧,也称关键帧,经过适度地压缩,作为随机访问的参考点,可以当成图象。I帧可以看成是一个图像经过压缩后的产物。
[0045] B帧(bi-directional interpolated prediction frame,双向预测内插编码帧),既考虑与源图像序列前面已编码帧,也顾及源图像序列后面已编码帧之间的时间冗余信息来压缩传输数据量的编码图像,也叫双向预测帧。
[0046] 如图1所示的为本申请提供的一种音视频剪辑方法实施例1的流程图,该方法可以应用于各种电子设备中,该电子设备可以采用台式机、智能电视、移动终端(手机、笔记本、平板电脑等)、计算机等。该方法可以包括以下步骤:
[0047] 步骤S101:获取待剪辑拼接的两个音视频片段;
[0048] 其中,所述两个音视频片段的编码格式相同。
[0049] 需要说明的是,由于本申请中涉及的音视频剪辑方法中,只对该音视频片段中的一部分GOP进行二次编码以及滤镜处理,不对其他部分进行二次编码,为保证两个音视频片段能够采用相同的编码方式进行解码编码,则需要该两个待剪辑拼接的音视频片段具有相同的编码格式。
[0050] 这里,这两个音视频片段可以是从一个视频流中依次获取得到,也可以为从不同的视频流中分别获取得到。
[0051] 需要说明的是,本实施例中仅是针对两个需要相邻拼接的音视频片段进行的说明,具体实施总,可以为多个音视频片段依次进行拼接。
[0052] 步骤S102:在每一所述音视频片段中,确定待进行滤镜处理的GOP组;
[0053] 其中,所述GOP组包含至少一个GOP。
[0054] 需要说明的是,音视频片段是由若干个GOP依次排列组成的,本方案中对音视频片段进行二次编码过程中采用的最小划分单位是GOP。
[0055] 本步骤中,针对每一个音视频片段确定对需要进行滤镜处理的GOP组。
[0056] 由于本申请中,必然需要对进行拼接的音视频片段进行滤镜处理,则每个音视频片段均需要进行滤镜处理,相应的,每个音视频片段中必然有至少一个GOP需要进行滤镜处理。
[0057] 步骤S103:分别对各所述音视频片段中确定的待进行滤镜处理的GOP组进行解码、滤镜处理以及编码;
[0058] 本实施例中,在确定了待进行滤镜处理的GOP组后,只需对该音视频片段中的该GOP组进行相应的解码、滤镜处理以及编码,实现对该音视频片段相应的部分进行二次编码以及滤镜处理的过程。
[0059] 在本步骤中,当该音视频片段在拼接时位于较前位置时,则对该音视频片段的末尾位置进行滤镜处理;当该音视频片段在拼接时位于较后位置时,则对该音视频片段的开始位置进行滤镜处理。
[0060] 步骤S104:将完成编码的两个音视频片段进行拼接,以使得所述两个音视频片段在时间轴中连续。
[0061] 具体的,按照预先设定的先后顺序,将该完成编码的两个音视频片段进行拼接,使其处于同一时间轴中,使得在该时间轴中,两个音视频片段连续。
[0062] 综上,本实施例提供的一种音视频剪辑方法中,包括:获取待剪辑拼接的两个音视频片段,所述两个音视频片段的编码格式相同;在每一所述音视频片段中,确定待进行滤镜处理的图像群组GOP组,所述GOP组包含至少一个GOP;分别对各所述音视频片段中确定的待进行滤镜处理的GOP组进行解码、滤镜处理以及编码;将完成编码的两个音视频片段进行拼接,以使得所述两个音视频片段在时间轴中连续。在该方法中,在对音视频剪辑添加滤镜处理的过程中,仅需要对待剪辑连接的每个音视频片段中处于滤镜处理范围内的几个图像群组GOP中对应的图像帧做过渡效果,相应的,只需要做过渡效果的图像帧所在GOP做一次解编码,无需对整段视频进行二次编码,设备CPU的只需对较少的视频进行二次编码,降低CPU负载和生成视频的时间。
[0063] 其中,该两个音视频片段属于同一视频流,能够从同一视频流中依次获取得到。
[0064] 如图2所示的为本申请提供的一种音视频剪辑方法实施例2的流程图,该方法可以包括以下步骤:
[0065] 步骤S201:依据接收的与所述视频流对应的剪辑时戳,以GOP为单位从所述视频流中选择与所述剪辑时戳匹配的位置;
[0066] 其中,该剪辑时戳可以为电子设备的系统中自动生成,也可为用户通过输入装置输入该电子设备中得到。
[0067] 具体实施中,在接收到该剪辑时戳后,从该视频流中选择相应的剪切位置。
[0068] 具体的,该剪辑时戳包含两个音视频片段的起止点分别对应的时戳,则当从该视频流中剪辑音视频片段,至少需要四个时戳,即剪辑两个音视频片段。
[0069] 在本实施例中,由于对音视频片段进行二次编码过程中采用的最小划分单位是GOP,则相应的,从视频流中剪切音视频片段时,也是以该GOP为单位进行确定剪切位置以实现剪切的过程。
[0070] 需要说明的是,由于该剪辑时戳具体可以对应该视频流中的具体某个时间点,该时间点可以对应一帧图像,而GOP中包含有多帧图像,则该剪辑时戳可以对应的为某一GOP的起始一帧(即I帧),也可以对应该GOP的其他帧。
[0071] 步骤S202:以所述位置为剪切位置,从所述视频流中获取所述两个音视频片段;
[0072] 在确定了剪切位置后,从在视频流中基于该剪切位置进行剪切,相应的获取得到该两个音视频片段。
[0073] 需要说明的是,具体实施中,可以为依据剪辑时戳在视频流的时间轴的先后顺序,依次从视频流中进行剪切,并在剪切后,直接对该剪切位置处是否属于待进行滤镜处理的GOP组进行判断,执行步骤的步骤S203-204,然后,对视频流进行下一剪切位置的剪切,循环执行步骤S203-204。
[0074] 如下图3-6所示的为,本实施例的具体使用场景示意图,以游戏《王者荣耀》为例进行说明,该场景中,用于《王者荣耀》的游戏录制功能,并将录制的视频用于生成王者时刻视频。
[0075] 其中,图3所示的为游戏设置页面示意图,在游戏的录像设置页面301中打开王者时刻开关302,该图3中,王者时刻开关302处于“开”的状态时,在游戏开始后,开始对该《王者荣耀》的游戏过程进行录制。
[0076] 其中,图4所示的为开始游戏页面示意图,用户可以通过开始游戏页面401从中选择“对战模式”、“冒险模式”和“排位赛”等对局模式,如图4中所示,选中的“排位赛”402对局模式,开始游戏。
[0077] 其中,图5所示的为游戏结束页面的一示意图,该游戏结束页面501中生成对话框502,该对话框中显示“是否生成王者时刻视频?”以及相应的选项“放弃”和“生成”,用户通过选择“生成”选项,确定生成王者时刻,以将用户在游戏过程中的击杀片段进行合并剪辑成一个新视频,并在片段的交接处加入淡入淡出滤镜效果。
[0078] 其中,图6所示的为游戏结束页面的另一示意图,该游戏结束页面601中生成提示框602,该提示框中显示选项“分享我的精彩视频”以及右上角关闭提示框的“×”,还有本次视频的具体长度为01:06、具体内容为“【王者荣耀】王者峡谷MVP后羿双…”,用户通过点击该提示框中的“分享我的精彩视频”实现分享过程。
[0079] 步骤S203:在每一所述音视频片段中,确定待进行滤镜处理的GOP组;
[0080] 步骤S204:分别对各所述音视频片段中确定的待进行滤镜处理的GOP组进行解码、滤镜处理以及编码;
[0081] 步骤S205:将完成编码的两个音视频片段进行拼接,以使得所述两个音视频片段在时间轴中连续。
[0082] 其中,步骤S203-205与实施例1中的步骤S102-104一致,本实施例中不再赘述。
[0083] 综上,本实施例提供的一种音视频剪辑方法中,该两个音视频片段属于同一视频流,所述获取待剪辑拼接的两个音视频片段,包括:依据接收的与所述视频流对应的剪辑时戳,以GOP为单位从所述视频流中选择与所述剪辑时戳匹配的位置;以所述位置为剪切位置,从所述视频流中获取所述两个音视频片段。采用该方法,通过基于以GOP为单位结合接收的剪辑时戳,从视频流中剪切与该剪辑时戳匹配的位置,保证了从视频流中剪切的音视频片段的开始和结束位置均是完整的GOP。
[0084] 其中,该两个音视频片段属于不同视频流,分别从该不同视频流中获取得到。
[0085] 如图7所示的为本申请提供的一种音视频剪辑方法实施例3的流程图,该方法可以包括以下步骤:
[0086] 步骤S701:依据接收的与第一视频流对应的剪辑时戳,以GOP为单位从第一视频流中选择与第一视频流对应的剪辑时戳匹配的位置作为剪切位置,从所述第一视频流中获取第一音视频片段;
[0087] 其中,该剪辑时戳可以为电子设备的系统中自动生成,也可为用户通过输入装置输入该电子设备中得到。
[0088] 具体实施中,在接收到该剪辑时戳后,分别从两个视频流中选择相应的剪切位置。
[0089] 具体的,该剪辑时戳包含其待剪切的第一音视频片段的起止点分别对应的时戳,则当从该第一视频流中剪辑音视频片段,至少需要两个时戳,即该第一音视频片段的开始时戳和结束时戳。
[0090] 步骤S702:依据接收的与第二视频流对应的剪辑时戳,以GOP为单位从第二视频流中选择与第二视频流对应的剪辑时戳匹配的位置作为剪切位置,从所述第二视频流中获取第二音视频片段;
[0091] 相应的,该剪辑时戳可以为电子设备的系统中自动生成,也可为用户通过输入装置输入该电子设备中得到。
[0092] 具体的,该剪辑时戳包含其待剪切的第二音视频片段的起止点分别对应的时戳,则当从该第二视频流中剪辑音视频片段,至少需要两个时戳,即该第二音视频片段的开始时戳和结束时戳。
[0093] 在本实施例中,由于对音视频片段进行二次编码过程中采用的最小划分单位是GOP,则相应的,从视频流中剪切音视频片段时,也是以该GOP为单位进行确定剪切位置以实现剪切的过程。
[0094] 具体使用场景中,该第一视频流可以为某一局对战中录制的视频,第二视频流可以为另一局对战中录制的视频。
[0095] 步骤S703:在每一所述音视频片段中,确定待进行滤镜处理的GOP组;
[0096] 步骤S704:分别对各所述音视频片段中确定的待进行滤镜处理的GOP组进行解码、滤镜处理以及编码;
[0097] 步骤S705:将完成编码的两个音视频片段进行拼接,以使得所述两个音视频片段在时间轴中连续。
[0098] 其中,步骤S703-705与实施例1中的步骤S102-104一致,本实施例中不再赘述。
[0099] 综上,本实施例提供的一种音视频剪辑方法中,该两个音视频片段属于不同视频流,则获取待剪辑拼接的两个音视频片段,包括:依据接收的与第一视频流对应的剪辑时戳,以GOP为单位从第一视频流中选择与第一视频流对应的剪辑时戳匹配的位置作为剪切位置,从所述第一视频流中获取第一音视频片段;依据接收的与第二视频流对应的剪辑时戳,以GOP为单位从第二视频流中选择与第二视频流对应的剪辑时戳匹配的位置作为剪切位置,从所述第二视频流中获取第二音视频片段。采用该方法,通过基于以GOP为单位结合接收的剪辑时戳,分别从两个视频流中剪切与该剪辑时戳匹配的位置,保证了从不同的视频流中剪切的两个音视频片段的开始和结束位置均是完整的GOP。
[0100] 如图8所示的为本申请提供的一种音视频剪辑方法实施例4的流程图,该方法可以包括以下步骤:
[0101] 步骤S801:依次读取所述视频流中的图像帧,在所述视频流中选择与所述剪辑时戳中的起始时戳相应的第一图像帧,在所述视频流中选择与所述剪辑时戳中的结束时戳相应的第二图像帧;
[0102] 具体的,视频流中包含一帧一帧连续的图像帧,依次对该图像帧进行读取,而每一图像帧有其对应的时间戳。
[0103] 相应的,依据该剪辑时戳中的起始时戳,在该视频流中确定与该起始时戳对应的第一图像帧,该第一图像帧为剪切的音视频片段起始位置对应的图像帧;
[0104] 相应的,依据该剪辑时戳中的结束时戳,在该视频流中确定与该结束时戳对应的第二图像帧,该第二图像帧为剪切的音视频片段结束位置对应的图像帧。
[0105] 步骤S802:将所述第一图像帧所属的GOP作为所述音视频片段剪辑对应的起始GOP、将所述第二图像帧所属的GOP作为所述音视频片段剪辑对应的结束GOP;
[0106] 需要说明的是,GOP是由一帧I帧、多帧P帧(Predicted Frame,前向预测帧)以及B帧组成,由于I帧中包含的为一帧图像的全部信息,而P帧则是对于前一帧图像的变量,则对GOP进行解码时,必须为从GOP的第一帧I帧开始进行解码。
[0107] 因此,将该第一图像帧所属的GOP为剪辑开始的起始GOP,将该第二图像帧所属的GOP作为剪辑结束的结束GOP。
[0108] 如图9所示的,是视频流剪辑示意图,图中从视频流901中剪切两个音视频片段902和903,其中,第一音视频片段902的长度为T1,其对应的剪辑时戳为t0和t1,第二音视频片段903的长度为T2,其对应的剪辑时戳为t2和t3。其中,该剪辑时戳t0对应的为I帧,则该I帧对应的GOP作为该第一音视频片段的起始GOP,该剪辑时戳t1对应的为P帧,则该P帧对应的GOP作为该第一音视频片段的结束GOP;其中,该剪辑时戳t2对应的为P帧,则该P帧对应的GOP作为该第二音视频片段的起始GOP,该剪辑时戳t3对应的为P帧,则该P帧对应的GOP作为该第二音视频片段的结束GOP,以使得最终实现剪辑的时戳是与GOP对齐的。
[0109] 需要说明的是,具体实施中,该剪辑时戳对应的GOP中I帧和P帧方式并不限定于此,具体实施中,还可以为其他组合方式,本申请中不做限制。
[0110] 步骤S803:以所述位置为剪切位置,从所述视频流中获取所述两个音视频片段;
[0111] 步骤S804:在每一所述音视频片段中,确定待进行滤镜处理的图像群组GOP组;
[0112] 步骤S805:分别对各所述音视频片段中确定的待进行滤镜处理的GOP组进行解码、滤镜处理以及编码;
[0113] 步骤S806:将完成编码的两个音视频片段进行拼接,以使得所述两个音视频片段在时间轴中连续。
[0114] 其中,步骤S803-806与实施例2中的步骤S202-205一致,本实施例中不再赘述。
[0115] 综上,本实施例提供的一种音视频剪辑方法中,该依据接收的剪辑时戳,以GOP为单位从所述视频流中选择与所述剪辑时戳匹配的位置,包括:依次读取所述视频流中的图像帧,在所述视频流中选择与所述剪辑时戳中的起始时戳相应的第一图像帧,在所述视频流中选择与所述剪辑时戳中的结束时戳相应的第二图像帧;将所述第一图像帧所属的GOP作为所述音视频片段剪辑对应的起始GOP、将所述第二图像帧所属的GOP作为所述音视频片段剪辑对应的结束GOP。采用该方法,通过选择剪辑时戳对应的图像帧所属的GOP,并将该GOP作为剪辑对应的起GOP始或者结束GOP,保证了音视频片段的开始和结束均将该剪辑时戳包含在内,且音视频片段的开始和结束位置均是完整的GOP。
[0116] 如图10所示的为本申请提供的一种音视频剪辑方法实施例5的流程图,该方法可以包括以下步骤:
[0117] 步骤S1001:依据接收的与所述视频流对应的剪辑时戳,以GOP为单位从所述视频流中选择与所述剪辑时戳匹配的位置;
[0118] 步骤S1002:以所述位置为剪切位置,从所述视频流中获取所述两个音视频片段;
[0119] 其中,步骤S1001-1002与实施例2中的步骤S201-202一致,本实施例中不再赘述。
[0120] 步骤S1003:依据预设的滤镜时长以及一个GOP时长,分析得到每一所述音视频片段中不小于所述滤镜时长所需GOP的个数;
[0121] 其中,该滤镜时长一般为剪辑用户自行设定,如2S、5S等,具体数值可以根据实际情况进行设置。
[0122] 其中,该GOP时长预先可知,则将该滤镜时长与一个该GOP的时长进行比对,得出该滤镜时长所需的GOP个数。
[0123] 具体的,GOP个数=滤镜时长/一个GOP时长。
[0124] 需要说明的是,当计算得到的GOP个数为非整数时,进一位取整数值。
[0125] 需要说明的是,本实施例中涉及的滤镜时长,是指该一个音视频片段中对应的滤镜时长,例如,该音视频片段中涉及的淡入的时长或者淡出的时长。
[0126] 具体实施中,该滤镜时长为片段交接处的整体淡入淡出时长时,则该GOP个数与滤镜时长的一半对应,即其对应的淡入/淡出所属的音视频片段中对应的滤镜时长。
[0127] 例如,当滤镜时长为5S,一个GOP时长为3秒,则需要的GOP个数至少为2个;当滤镜时长为2S,一个GOP时长为3秒,则需要的GOP个数至少为1个。
[0128] 例如,视频的GOP时长为3s,帧率为15FPS,即一个GOP包含45帧图像,淡出淡入过渡时长为2s(即淡出1秒,淡入1秒),添加过渡效果就是对在前音视频片段解码后的最后15帧做淡出滤镜,即最后一个GOP进行解码和编码处理,,对在后音视频片段解码后的开头15帧做淡入滤镜,即对第一个GOP进行解码和编码处理。
[0129] 具体实施中,为降低对音视频片段解码、编码的数据处理量,一般采用滤镜时长所需GOP的个数的最小值。
[0130] 步骤S1004:在每一所述音视频片段的交接处,选择所述个数的GOP组成GOP组;
[0131] 其中,在音视频片段进行拼接对应的交接处,确定相应的进行拼接所需的解码、编码以及滤镜处理对应的GOP组。
[0132] 具体的,该GOP组中包含有上述步骤S1003中确定的个数的GOP。
[0133] 需要说明的是,该GOP组中的GOP按照视频流的时间轴连续排列。
[0134] 步骤S1005:分别对各所述音视频片段中确定的待进行滤镜处理的GOP组进行解码、滤镜处理以及编码;
[0135] 步骤S1006:将完成编码的两个音视频片段进行拼接,以使得所述两个音视频片段在时间轴中连续。
[0136] 其中,步骤S1005-1006与实施例2中的步骤S204-205一致,本实施例中不再赘述。
[0137] 综上,本实施例提供的一种音视频剪辑方法中,该在每一所述音视频片段中,确定待进行滤镜处理的图像群组GOP组,包括:依据预设的滤镜时长以及一个GOP时长,分析得到每一所述音视频片段中不小于所述滤镜时长所需GOP的个数;在每一所述音视频片段的交接处,选择所述个数的GOP组成GOP组。采用该方法,依据预设滤镜时长以及一个GOP的时长,确定该滤镜所需的GOP个数,并在音视频片段的交接处选择相应个数的GOP组成的GOP组,以使得在后续仅针对该GOP组进行编码解码以及相应的滤镜处理,降低CPU负载和生成视频的时间。
[0138] 其中,该待拼接的音视频片段在时间轴中的排序在前时,在对该音视频片段中末尾处的相应图像帧进行滤镜处理。
[0139] 如图11所示的为本申请提供的一种音视频剪辑方法实施例6的流程图,该方法可以包括以下步骤:
[0140] 步骤S1101:依据接收的与所述视频流对应的剪辑时戳,以GOP为单位从所述视频流中选择与所述剪辑时戳匹配的位置;
[0141] 步骤S1102:以所述位置为剪切位置,从所述视频流中获取所述两个音视频片段;
[0142] 步骤S1103:依据预设的滤镜时长以及一个GOP时长,分析得到每一所述音视频片段中不小于所述滤镜时长所需GOP的个数;
[0143] 其中,步骤S1101-1103与实施例5中的步骤S1001-1003一致,本实施例中不再赘述。
[0144] 步骤S1104:按照所述视频流的时间轴顺序,依次读取所述音视频片段的图像帧;
[0145] 步骤S1105:判断当前帧的时戳是否大于所述音视频片段的结束时戳与所述个数的GOP时间总长度之差,得到第一判断结果;
[0146] 步骤S1106:判断所述当前帧是否为其所属的GOP的关键帧,得到第二判断结果;
[0147] 步骤S1107:基于所述第一判断结果表征当前帧的时戳大于所述音视频片段的结束时戳与所述个数的GOP时间总长度之差,且所述第二判断结果表征当前帧为关键帧,则确定所述当前帧所属的GOP为所述交接处的起始GOP;
[0148] 具体的,对该音视频片段中的图像帧依次进行读取,每个图像帧对应一个时戳,当读取到的当前帧的时戳与该音视频片段的结束时戳之间的差刚好大于该GOP组的总长度时,并且该当前帧为其所属的GOP的关键帧,即I帧时,则可以确定当前帧开始的GOP为该音视频片段的GOP组。
[0149] 具体实施中,为保证为提高剪辑的精度,还可以采用当前帧的时间戳>GOP组的时间长度-1确定相应的起始GOP。
[0150] 需要说明的是,具体实施中,可以在剪切视频流得到音视频片段过程中,直接对其剪切点对应的性质进行分析,如其剪切点也是拼接的交接处时,则直接对其进行滤镜处理对应的GOP组进行分析,以减少因为剪切下音视频片段后,再重复读取图像帧导致的时间浪费。
[0151] 步骤S1108:在所述音视频片段中从所述起始GOP开始获取所述个数的GOP,得到所述GOP组;
[0152] 其中,确定了GOP组的起始GOP后,从该起始GOP开始获取该个数的GOP,即到达该音视频片段的结束位置的GOP,该获取的几个GOP组成了GOP组。
[0153] 如图12所示的为音视频片段的一种GOP组示意图,其中,该音视频片段为在前的音视频片段,则需要对其靠近结束位置的GOP组1201进行解码编码处理,在该图12中,该GOP组为一个GOP。
[0154] 如图13所示的为音视频片段的另一种GOP组示意图,其中,该音视频片段为在前的音视频片段,则需要对其靠近结束位置的GOP组1301进行解码编码处理,在该图13中,该GOP组为2个GOP。
[0155] 步骤S1109:分别对各所述音视频片段中确定的待进行滤镜处理的GOP组进行解码、滤镜处理以及编码;
[0156] 步骤S1110:将完成编码的两个音视频片段进行拼接,以使得所述两个音视频片段在时间轴中连续。
[0157] 其中,步骤S1109-1110与实施例5中的步骤1005-1006一致,本实施例中不再赘述。
[0158] 综上,本实施例提供的一种音视频剪辑方法中,当所述音视频片段在时间轴的排序在前时,则在所述音视频片段的交接处,选择所述个数的GOP组成GOP组,包括:按照所述视频流的时间轴顺序,依次读取所述音视频片段的图像帧,判断当前帧的时戳是否大于所述音视频片段的结束时戳与所述个数的GOP时间总长度之差,得到第一判断结果;判断所述当前帧是否为其所属的GOP的关键帧,得到第二判断结果;基于所述第一判断结果表征当前帧的时戳大于所述音视频片段的结束时戳与所述个数的GOP时间总长度之差,且所述第二判断结果表征当前帧为关键帧,则确定所述当前帧所属的GOP为所述交接处的起始GOP;在所述音视频片段中从所述起始GOP开始获取所述个数的GOP,得到所述GOP组。采用该方法,对排序在前的音视频片段的末尾位置的GOP组进行分析确定,得到其进行解码编码以及滤镜处理对应的GOP,准确定位GOP组,降低CPU负载和生成视频的时间。
[0159] 其中,该待拼接的音视频片段在时间轴中的排序在后时,在对该音视频片段中开始处的相应图像帧进行滤镜处理。
[0160] 如图14所示的为本申请提供的一种音视频剪辑方法实施例7的流程图,该方法可以包括以下步骤:
[0161] 步骤S1401:依据接收的与所述视频流对应的剪辑时戳,以GOP为单位从所述视频流中选择与所述剪辑时戳匹配的位置;
[0162] 步骤S1402:以所述位置为剪切位置,从所述视频流中获取所述两个音视频片段;
[0163] 步骤S1403:依据预设的滤镜时长以及一个GOP时长,分析得到每一所述音视频片段中不小于所述滤镜时长所需GOP的个数;
[0164] 其中,步骤S1001-1002与实施例5中的步骤S1001-1003一致,本实施例中不再赘述。
[0165] 步骤S1404:按照所述视频流的时间轴顺序,从所述音视频片段的起始位置开始,选择所述个数的GOP组成GOP组;
[0166] 需要说明的是,由于前述步骤中,对视频流进行剪辑得到音视频片段时,是以GOP为单位进行剪切的,则相应该音视频片段的第一帧必然为I帧,即,其起始的为一个完整的GOP。
[0167] 具体实施中,当该音视频片段的排序在后时,则其交接处在该音视频片段的起始位置,相应的,对该音视频片段起始位置开始的几个GOP组组成的GOP组进行获取。
[0168] 如图15所示的为音视频片段的GOP组示意图,其中音视频片段为在后的音视频片段,则需要对其开始位置的GOP组1501进行解码编码处理,在该图15中,该GOP组为1个GOP。
[0169] 需要说明的是,具体实施中,该GOP组可以为多个GOP,本实施例中不做限制。
[0170] 需要说明的是,具体实施中,也可以在剪切视频流得到音视频片段过程中,直接对其剪切点对应的性质进行分析,如其剪切点也是拼接的交接处时,则直接对其进行滤镜处理对应的GOP组进行分析,以减少因为剪切下音视频片段后,再重复读取图像帧导致的时间浪费。
[0171] 步骤S1405:分别对各所述音视频片段中确定的待进行滤镜处理的GOP组进行解码、滤镜处理以及编码;
[0172] 步骤S1406:将完成编码的两个音视频片段进行拼接,以使得所述两个音视频片段在时间轴中连续。
[0173] 其中,步骤S1405-1406与实施例5中的步骤S1005-1006一致,本实施例中不再赘述。
[0174] 综上,本实施例提供的一种音视频剪辑方法中,所述音视频片段在时间轴的排序在后时,则所述在所述音视频片段的交接处,选择所述个数的GOP组成GOP组,包括:按照所述视频流的时间轴顺序,从所述音视频片段的起始位置开始,选择所述个数的GOP组成GOP组。采用该方法,对排序在后的音视频片段的开始位置的GOP组进行分析确定,得到其进行解码编码以及滤镜处理对应的GOP,准确定位GOP组,降低CPU负载和生成视频的时间。
[0175] 如图16所示的为本申请提供的一种音视频剪辑方法实施例8的流程图,该方法可以包括以下步骤:
[0176] 步骤S1601:依据接收的与所述视频流对应的剪辑时戳,以GOP为单位从所述视频流中选择与所述剪辑时戳匹配的位置;
[0177] 步骤S1602:以所述位置为剪切位置,从所述视频流中获取所述两个音视频片段;
[0178] 步骤S1603:依据预设的滤镜时长以及一个GOP时长,分析得到每一所述音视频片段中不小于所述滤镜时长所需GOP的个数;
[0179] 步骤S1604:按照所述视频流的时间轴顺序,依次读取所述音视频片段的图像帧;
[0180] 步骤S1605:判断当前帧的时戳是否大于所述音视频片段的结束时戳与所述个数的GOP时间总长度之差,得到第一判断结果;
[0181] 步骤S1606:判断所述当前帧是否为其所属的GOP的关键帧,得到第二判断结果;
[0182] 步骤S1607:基于所述第一判断结果表征当前帧的时戳大于所述音视频片段的结束时戳与所述个数的GOP时间总长度之差,且所述第二判断结果表征当前帧为关键帧,则确定所述当前帧所属的GOP为所述交接处的起始GOP;
[0183] 步骤S1608:在所述音视频片段中从所述起始GOP开始获取所述个数的GOP,得到所述GOP组;
[0184] 其中,步骤S1601-1608与实施例6中的步骤S1101-1108一致,本实施例中不再赘述。
[0185] 步骤S1609:按照所述视频流的时间轴顺序,依次对所述音视频片段的所述GOP组进行解码,得到第一解码数据;
[0186] 具体的,按照该视频流的时间轴顺序,对该音视频片段中的GOP组进行解码,将GOP组中的各个帧均解码为具有完整图像信息的图像帧信息。
[0187] 其中,该第一解码数据中该GOP组中所有帧均具有完整图像信息。
[0188] 步骤S1610:在依次读取所述音视频片段的图像帧过程中,依据预设的滤镜时长,判断得到所述音视频片段的所述GOP组中的当前帧为过渡帧,对所述第一解码数据中从当前帧开始的剩余帧进行淡出滤镜处理;
[0189] 具体的,依据预设的滤镜时长,确定该GOP组的某一帧为过渡帧,则从该过渡帧开始至该音视频片段结束的一帧均属于淡出滤镜处理范围。
[0190] 相应的,在依次读取所述音视频片段的图像帧过程中,对该音视频片段中的GOP组进行解码时,判断其读取的每一帧是否为过渡帧,并在判断得到当前读取的当前帧为过渡帧时,开始进行淡出滤镜处理,至该音视频片段结束的最后一帧。
[0191] 步骤S1611:将经过淡出滤镜处理的所述GOP组进行编码,将得到的第一编码数据写入所述音视频片段对应的视频包中;
[0192] 其中,在对音视频片段的GOP组完成淡出滤镜处理后,对该GOP组进行编码,使其编码形式与该音视频片段中的其他GOP的编码方式一致,并将编码得到的第一编码数据写入该音视频片段对应的视频包中,完成对该音视频片段的淡出滤镜处理。
[0193] 具体的,其中,该步骤S1611中,所述将得到的第一编码数据写入所述音视频片段对应的视频包中,具体包括:依据预设的时戳数据对应关系,确定编码得到第一编码数据对应的时戳;按照时戳顺序,将所述第一编码数据写入所述视频包中。
[0194] 需要说明的是,由于在对音视频数据进行解码和编码过程中存在缓存的情况,还有一些编码格式存在B帧,导致输入帧和输出帧之间的pts(Presentation Time Stamp,显示时间戳)和顺序都是不一致,则本申请中相应的提供了一种时戳数据对应关系,相应的,基于时戳,确定输入帧与输出帧之间的对应关系,即输入帧经过处理后,得到输出帧,基于该时戳,确定该输出帧与该输入帧对应,进而将该输出帧写入该输入帧在该视频包中的相应位置处,保证每个数据包二次编码前后数据和时戳保持一致。
[0195] 具体实施中,该可以通过介质对的方式进行存储,其中,键表示时戳,值表示数据。
[0196] 具体实施中,由于该剪切以及解码编码的过程是在读取该视频流的过程中实现的,则相应的,在读取到需要进行剪切的音视频片段时,执行对该视频流的剪切,并针对剪切位置是否为交接处进行判断,进而在确定为交接处后,直接对该交接处的GOP组进行判断,并从该GOP组的起始GOP开始进行解码以及相应的进行滤镜处理的图像帧进行滤镜处理,在完成滤镜处理后,对该GOP组相应的进行编码,并写入相应的视频包中,完成对一个音视频片段的处理,并继续对该视频流进行读取,进行后续的音视频片段的剪切以及解码、滤镜处理和编码的过程。
[0197] 步骤S1612:将完成编码的两个音视频片段进行拼接,以使得所述两个音视频片段在时间轴中连续。
[0198] 其中,步骤S1612与实施例6中的步骤1110一致,本实施例中不再赘述。
[0199] 具体实施中,在完成第一解码数据后,还要依据所述第一编码数据,更新所述视频包的参数信息。
[0200] 其中,该参数信息可以包括size(视频数据包的大小)信息等。
[0201] 综上,本实施例提供的一种音视频剪辑方法中,该对音视频片段中确定的待进行滤镜处理的GOP组进行解码、滤镜处理以及编码,包括:按照所述视频流的时间轴顺序,依次对所述音视频片段的所述GOP组进行解码,得到第一解码数据;在依次读取所述音视频片段的图像帧过程中,依据预设的滤镜时长,判断得到所述音视频片段的所述GOP组中的当前帧为过渡帧,对所述第一解码数据中从当前帧开始的剩余帧进行淡出滤镜处理;将经过淡出滤镜处理的所述GOP组进行编码,将得到的第一编码数据写入所述音视频片段对应的视频包中。采用该方法,在确定的GOP组进行解码,并选择过渡帧开始的淡出滤镜处理,将经过淡出滤镜处理的GOP祖进行编码得到编码数据并写入音视频片段对应的视频包中,完成解码、滤镜处理以及编码过程,且只需要做过渡效果的图像帧所在GOP组做解编码,无需对整段视频进行二次编码,设备CPU的只需对较少的视频进行二次编码,降低CPU负载和生成视频的时间。
[0202] 如图17所示的为本申请提供的一种音视频剪辑方法实施例9的流程图,该方法可以包括以下步骤:
[0203] 步骤S1701:依据接收的与所述视频流对应的剪辑时戳,以GOP为单位从所述视频流中选择与所述剪辑时戳匹配的位置;
[0204] 步骤S1702:以所述位置为剪切位置,从所述视频流中获取所述两个音视频片段;
[0205] 步骤S1703:依据预设的滤镜时长以及一个GOP时长,分析得到每一所述音视频片段中不小于所述滤镜时长所需GOP的个数;
[0206] 步骤S1704:按照所述视频流的时间轴顺序,从所述音视频片段的起始位置开始,选择所述个数的GOP组成GOP组;
[0207] 其中,步骤S1701-1701与实施例7中的步骤S1401-1404一致,本实施例中不再赘述。
[0208] 步骤S1705:按照所述视频流的时间轴顺序,依次对所述音视频片段的所述GOP组进行解码,得到第二解码数据;
[0209] 体的,按照该视频流的时间轴顺序,对该音视频片段中的GOP组进行解码,将GOP组中的各个帧均解码为具有完整图像信息的图像帧信息。
[0210] 其中,该第二解码数据中该GOP组中所有帧均具有完整图像信息。
[0211] 步骤S1706:在依次读取所述音视频片段的图像帧过程中,从所述音视频片段第一帧开始至与预设的滤镜时长对应时戳的图像帧结束,对所述第二解码数据进行淡入滤镜处理;
[0212] 其中,该音视频片段为淡入滤镜处理,则从该音视频片段的第一帧开始进行滤镜处理,并且该滤镜时长对应的时戳的图像帧为结束,完成对该第二解码数据的淡入滤镜处理。
[0213] 步骤S1707:将经过淡入滤镜处理的所述GOP组进行编码,将得到的第二编码数据写入所述音视频片段对应的视频包中;
[0214] 其中,在对音视频片段的GOP组完成淡入滤镜处理后,对该GOP组进行编码,使其编码形式与该音视频片段中的其他GOP的编码方式一致,并将编码得到的第二编码数据写入该音视频片段对应的视频包中,完成对该音视频片段的淡入滤镜处理。
[0215] 具体的,其中,该步骤S1707中,所述将得到的第二编码数据写入所述音视频片段对应的视频包中,具体的过程可以参考前述实施例8中的将第一编码数据写入音视频片段对应的视频包的相应内容。
[0216] 与实施例8中类似的,还要根据该第二编码数据更新视频包的参数信息。
[0217] 步骤S1708:将完成编码的两个音视频片段进行拼接,以使得所述两个音视频片段在时间轴中连续。
[0218] 其中,步骤S1708与实施例7中的步骤S1406一致,本实施例中不再赘述。
[0219] 综上,本实施例提供的一种音视频剪辑方法中,所述音视频片段在时间轴的排序在后时,则对音视频片段中确定的待进行滤镜处理的GOP组进行解码、滤镜处理以及编码,包括:按照所述视频流的时间轴顺序,依次对所述音视频片段的所述GOP组进行解码,得到第二解码数据;在依次读取所述音视频片段的图像帧过程中,从所述音视频片段第一帧开始至与预设的滤镜时长对应时戳的图像帧结束,对所述第二解码数据进行淡入滤镜处理;将经过淡入滤镜处理的所述GOP组进行编码,将得到的第二编码数据写入所述音视频片段对应的视频包中。采用该方法,在确定的GOP组进行解码,并从音视频片段的第一帧至与预设的滤镜时长对应时戳的图像帧结束进行淡入滤镜处理,将经过淡入滤镜处理的GOP祖进行编码得到编码数据并写入音视频片段对应的视频包中,完成解码、滤镜处理以及编码过程,且只需要做过渡效果的图像帧所在GOP组做解编码,无需对整段视频进行二次编码,设备CPU的只需对较少的视频进行二次编码,降低CPU负载和生成视频的时间。
[0220] 如图18所示的为本申请提供的一种音视频剪辑方法实施例10的流程图,该方法可以包括以下步骤:
[0221] 步骤S1801:分析运行平台的类型;
[0222] 其中,该运行平台的类型可以包括:android(安卓)、iOS(苹果移动设备操作系统)以及其他。
[0223] 具体实施中,该其他平台采用Windows(微软视窗)系统、Linux等。
[0224] 本实施例中,针对不同的运行平台设置不同的硬件编解码器参数,以实现针对不同运行平台的接口设置相应的参数。
[0225] 步骤S1802:根据平台类型配置相应的硬件编解码器参数;
[0226] 具体的,该硬件编解码器包括:MediaCodec、ffmpeg、VideoToolBox等。
[0227] 具体的,该Android采用MediaCodec(次选ffmpeg),该iOS采用CodecEngine,其他类型采用ffmpeg。
[0228] 需要说明的是,由于硬件编解码器在android/iOS平台存在系统版本和芯片兼容性问题,例如MediaCodec要求系统在android4.1+,VideoToolbox要求系统在iOS 8.0+,必须在硬件编解码器配置失败后,重新配置通用编解码器ffmpeg。
[0229] 具体的,编解码器的设置,充分考虑到跨平台的性能以及兼容性,抽象出编解码器的接口:CodecEngine。考虑到移动平台的功耗,性能开销,CodecEngine在Android/iOS平台上实现了各自系统上硬件编解码接口,window/Linux等平台实现基于ffmpeg+x264的通用编解码接口。
[0230] 具体实施中,该配置硬件编解码器参数的具体过程为:解析源媒体文件,保存音视频流格式信息,根据音视频流格式设置编解码器,创建输出文件,并写入媒体头信息。
[0231] 步骤S1803:获取待剪辑拼接的两个音视频片段;
[0232] 步骤S1804:在每一所述音视频片段中,确定待进行滤镜处理的图像群组GOP组;
[0233] 步骤S1805:分别对各所述音视频片段中确定的待进行滤镜处理的GOP组进行解码、滤镜处理以及编码;
[0234] 步骤S1806:将完成编码的两个音视频片段进行拼接,以使得所述两个音视频片段在时间轴中连续。
[0235] 其中,步骤S1803-1806与实施例1中的步骤S101-104一致,本实施例中不再赘述。
[0236] 综上,本实施例提供的一种音视频剪辑方法中,在获取待剪辑连接的两个音视频片段之前还包括:分析运行平台的类型;根据平台类型配置相应的硬件编解码器参数。采用该方法,通过对平台配置相应的硬件编解码器参数,以使得解码编码都采用平台的硬件编解码器,最大程度的降低CPU负载和生成视频的时间。
[0237] 上述本发明提供的实施例中详细描述了一种音视频剪辑方法,对于本发明的音视频剪辑方法可采用多种形式的装置实现,因此本发明还提供了一种应用该音视频剪辑方法的装置,下面给出具体的实施例进行详细说明。
[0238] 如图19所示的为本申请提供的一种音视频剪辑装置实施例1的结构示意图,该电子设备可以采用台式机、智能电视、移动终端(手机、笔记本、平板电脑等)、计算机等。该电子设备可以包括以下结构:获取单元1901、分析单元1902、处理单元1903和拼接单元1904;
[0239] 其中,该获取单元1901,用于获取待剪辑拼接的两个音视频片段,所述两个音视频片段的编码格式相同;
[0240] 其中,该分析单元1902,用于在每一所述音视频片段中,确定待进行滤镜处理的图像群组GOP组,所述GOP组包含至少一个GOP;
[0241] 其中,该处理单元1903,用于分别对各所述音视频片段中确定的待进行滤镜处理的GOP组进行解码、滤镜处理以及编码;
[0242] 其中,该拼接单元1904,用于将完成编码的两个音视频片段进行拼接,以使得所述两个音视频片段在时间轴中连续。
[0243] 优选的,所述两个音视频片段属于同一视频流,所述获取单元用于:
[0244] 依据接收的与所述视频流对应的剪辑时戳,以GOP为单位从所述视频流中选择与所述剪辑时戳匹配的位置;
[0245] 以所述位置为剪切位置,从所述视频流中获取所述两个音视频片段。
[0246] 优选的,所述两个音视频片段属于不同视频流,所述获取单元用于:
[0247] 依据接收的与第一视频流对应的剪辑时戳,以GOP为单位从第一视频流中选择与第一视频流对应的剪辑时戳匹配的位置作为剪切位置,从所述第一视频流中获取第一音视频片段;
[0248] 依据接收的与第二视频流对应的剪辑时戳,以GOP为单位从第二视频流中选择与第二视频流对应的剪辑时戳匹配的位置作为剪切位置,从所述第二视频流中获取第二音视频片段。
[0249] 优选的,所述获取单元具体用于:
[0250] 依次读取所述视频流中的图像帧,在所述视频流中选择与所述剪辑时戳中的起始时戳相应的第一图像帧,在所述视频流中选择与所述剪辑时戳中的结束时戳相应的第二图像帧;
[0251] 将所述第一图像帧所属的GOP作为所述音视频片段剪辑对应的起始GOP、将所述第二图像帧所属的GOP作为所述音视频片段剪辑对应的结束GOP。
[0252] 优选的,所述获取单元具体用于:
[0253] 依据预设的滤镜时长以及一个GOP时长,分析得到每一所述音视频片段中不小于所述滤镜时长所需GOP的个数;
[0254] 在每一所述音视频片段的交接处,选择所述个数的GOP组成GOP组。
[0255] 优选的,所述音视频片段在时间轴的排序在前时,所述分析单元用于:
[0256] 按照所述视频流的时间轴顺序,依次读取所述音视频片段的图像帧,判断当前帧的时戳是否大于所述音视频片段的结束时戳与所述个数的GOP时间总长度之差,得到第一判断结果;判断所述当前帧是否为其所属的GOP的关键帧,得到第二判断结果;
[0257] 基于所述第一判断结果表征当前帧的时戳大于所述音视频片段的结束时戳与所述个数的GOP时间总长度之差,且所述第二判断结果表征当前帧为关键帧,则确定所述当前帧所属的GOP为所述交接处的起始GOP;
[0258] 在所述音视频片段中从所述起始GOP开始获取所述个数的GOP,得到所述GOP组。
[0259] 优选的,所述分析单元具体用于:按照所述视频流的时间轴顺序,依次对所述音视频片段的所述GOP组进行解码,得到第一解码数据;
[0260] 在依次读取所述音视频片段的图像帧过程中,依据预设的滤镜时长,判断得到所述音视频片段的所述GOP组中的当前帧为过渡帧,对所述第一解码数据中从当前帧开始的剩余帧进行淡出滤镜处理;
[0261] 将经过淡出滤镜处理的所述GOP组进行编码,将得到的第一编码数据写入所述音视频片段对应的视频包中。
[0262] 优选的,还包括:更新单元,用于依据所述第一编码数据,更新所述视频包的参数信息。
[0263] 优选的,所述处理单元,用于:
[0264] 依据预设的时戳数据对应关系,确定编码得到第一编码数据对应的时戳;
[0265] 按照时戳顺序,将所述第一编码数据写入所述视频包中。
[0266] 优选的,所述音视频片段在时间轴的排序在后时,所述分析单元用于:
[0267] 按照所述视频流的时间轴顺序,从所述音视频片段的起始位置开始,选择所述个数的GOP组成GOP组。
[0268] 优选的,所述处理单元,用于
[0269] 按照所述视频流的时间轴顺序,依次对所述音视频片段的所述GOP组进行解码,得到第二解码数据;
[0270] 在依次读取所述音视频片段的图像帧过程中,从所述音视频片段第一帧开始至与预设的滤镜时长对应时戳的图像帧结束,对所述第二解码数据进行淡入滤镜处理;
[0271] 将经过淡入滤镜处理的所述GOP组进行编码,将得到的第二编码数据写入所述音视频片段对应的视频包中。
[0272] 优选的,还包括:配置单元,用于:
[0273] 分析运行平台的类型;
[0274] 根据平台类型配置相应的硬件编解码器参数。
[0275] 综上,本实施例提供的一种音视频剪辑装置中,在对音视频剪辑添加滤镜处理的过程中,仅需要对待剪辑连接的每个音视频片段中处于滤镜处理范围内的几个图像群组GOP中对应的图像帧做过渡效果,相应的,只需要做过渡效果的图像帧所在GOP做一次解编码,无需对整段视频进行二次编码,设备CPU的只需对较少的视频进行二次编码,降低CPU负载和生成视频的时间。
[0276] 需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0277] 最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0278] 以上对本申请所提供的一种音视频剪辑方法及装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。