发明内容
鉴于上述问题,本发明提出了一种多媒体片段拼接方法、装置、移动终端及存储介质,满足实时预览拼接效果的需求。
第一方面,本发明实施例提供一种多媒体片段拼接方法,包括:
接收到多媒体片段拼接处理请求后,确定目标多媒体片段、目标多媒体片段的拼接顺序、每相邻两个目标多媒体片段之间的第一拼接过渡效果、每个第一拼接过渡效果的起止时间和目标多媒体文件的时间长度;
根据上述目标多媒体片段的拼接顺序、各个第一拼接过渡效果的起止时间和目标多媒体文件的时间长度确定每个目标多媒体片段对应的视频轨道的播放时间段,根据视频轨道的播放时间段创建视频轨道,每个目标多媒体片段分别对应一个视频轨道;
将每个目标多媒体片段分别加载到对应的视频轨道上;
按时序从各播放时间段对应的视频轨道上逐帧读取视频帧进行处理,并实时播放处理得到的多媒体帧,相邻两个目标多媒体片段对应的视频轨道的播放时间段的重合部分为该相邻两个目标多媒体片段之间的第一拼接过渡效果对应的时间段,对每相邻两个目标多媒体片段之间的第一拼接过渡效果对应的时间段内读取的视频帧进行的处理至少用于实现本第一拼接过渡效果;
根据上述处理得到的多媒体帧创建上述目标多媒体文件。
本发明实施例提供的方法,创建多个视频轨道,每个目标多媒体片段加载到不同的视频轨道上,按时序从各播放时间段对应的视频轨道上逐帧读取视频帧进行处理。由于每个目标多媒体片段加载在不同的视频轨道上,可以分别独立进行加载,实时进行处理并播放,能够满足实时性的需求。除此之外,本发明实施例中,由于相邻的两个多媒体片段加载到不同的视频轨道上,因此可以在重合的时间段分别独立进行逐帧读取,并进行合并渲染,从而可以实现动态过渡效果。
进一步地,上述按时序从各播放时间段对应的视频轨道上逐帧读取视频帧进行处理,并实时播放处理得到的多媒体帧的实现方式可以是:加载多媒体播放器,并实时回调多媒体播放器的时间戳;从回调的时间戳所在的播放时间段对应的视频轨道上读取同步视频帧进行处理,同步视频帧为与回调的时间戳同步的视频帧;通过多媒体播放器实时播放处理得到的多媒体帧。
本发明实施例提供的方法,首先加载多媒体播放器,并通过多媒体播放器的时间戳读取同步视频帧,对读取到的同步视频帧进行处理并通过多媒体播放器实时播放,从而驱动多媒体播放器的时间轴。通过时间戳-同步视频帧的双向驱动,简单、可靠地实现了实时预览多媒体片段拼接结果。
进一步地,一种实现方式中,每个视频轨道的起止时间为本视频轨道的播放时间段的起止时间,相应的,从回调的时间戳所在的播放时间段对应的视频轨道上读取同步视频帧进行处理的实现方式包括:查找存在同步视频帧的视频轨道,从查找到的视频轨道上读取同步视频帧进行处理。这种实现方式中,视频轨道的时间长度与其播放时间段的时间长度相同,那么,在第一拼接过渡效果对应的时间段之外读取同步视频帧时,可以快速查找到对应的视频轨道并从中读取同步视频帧。另一种实现方式中,每个视频轨道标记有本视频轨道的播放时间段的起止时间,相应的,从回调的时间戳所在的播放时间段对应的视频轨道上读取同步视频帧进行处理的实现方式可以包括:确定回调的时间戳所在的播放时间段,从确定的播放时间段对应的视频轨道上读取同步视频帧进行处理。这种实现方式中,视频轨道的时间长度与其播放时间段的时间长度不相同,但因为预先确定了视频轨道的播放时间段的起止时间,因此可以简单快速地确定回调的时间戳所在的播放时间段,进而确定需要读取同步视频帧的视频轨道。
在上述任意方法实施例的基础上,加载到对应的视频轨道上的目标多媒体片段的时间长度小于对应的视频轨道的播放时间段的时间长度,相应的,按时序从各播放时间段对应的视频轨道上逐帧读取视频帧进行处理之前,还可以确定每个第一拼接过渡效果对应的过渡多媒体片段;在每个视频轨道的空闲时间段上加载空白多媒体片段或无背景多媒体片段,空闲时间段为未加载目标多媒体片段的第一拼接过渡效果对应的时间段;若需要读取空闲时间段上的视频帧,利用空闲时间段对应的第一拼接过渡效果对应的过渡多媒体片段逐帧替换空白多媒体片段或无背景多媒体片段。
本发明实施例中,若第一拼接过渡效果不是或不仅是通过目标多媒体片段包括的多媒体帧实现的,那么,创建的视频轨道的播放时间段既包括播放目标多媒体片段的时间段,也包括播放利用过渡多媒体片段实现第一拼接过渡效果的时间段。相应的,不需要预先基于过渡多媒体片段生成背景视频并加载到视频轨道上,而是利用空白多媒体片段或者无背景多媒体片段进行占位,在需要进行过渡效果渲染处理时,再读取过渡多媒体片段并逐帧替换占位用的空白多媒体片段或无背景多媒体片段。这种处理方式由于无需预先生成背景视频,因此提高了多媒体片段拼接的效率,降低了延迟。另外,若过渡多媒体片段为图像,可以直接加载原图进行实时处理,避免出现分辨率不同导致的图像黑边现象。
在此基础上,若第一拼接过渡效果是利用相邻的后续多媒体片段以及过渡多媒体片段实现的,那么,加载到对应的视频轨道上的目标多媒体片段的时间长度为对应的视频轨道的播放时间段的时间长度与本目标多媒体片段的后续第一拼接过渡效果对应的时间段的时间长度之差,其中,本目标多媒体片段的后续第一拼接过渡效果为本目标多媒体片段与相邻的后续目标多媒体片段之间的第一拼接过渡效果。若第一拼接过渡效果是利用相邻的前序多媒体片段和过渡多媒体片段实现的,那么,加载到对应的视频轨道上的目标多媒体片段的时间长度为对应的视频轨道的播放时间段的时间长度与本目标多媒体片段的前续第一拼接过渡效果对应的时间段的时间长度之差,本目标多媒体片段的前续第一拼接过渡效果为本目标多媒体片段与相邻的前续目标多媒体片段之间的第一拼接过渡效果。若第一拼接过渡效果完全是利用过渡多媒体片段实现的,那么,加载到对应的视频轨道上的目标多媒体片段的时间长度为所述对应的视频轨道的非重合播放时间段的时间长度,其中,非重合播放时间段为视频轨道的播放时间段中第一拼接过渡效果对应的时间段之外的部分。
在上述任意方法实施例的基础上,还可以在接收到调整拼接过渡效果请求后,确定待调整的第一拼接过渡效果、每个待调整的第一拼接过渡效果对应的第二拼接过渡效果、和第二拼接过渡效果的起止时间;根据第二拼接过渡效果的起止时间,重新确定每个待调整的第一拼接过渡效果对应的视频轨道的播放时间段;通过对每个待调整的第一拼接过渡效果对应的视频轨道前后两次分别确定的播放时间段取并集,确定每个待调整的第一拼接过渡效果对应的视频轨道对应的调整时间段;从各调整时间段对应的视频轨道上逐帧读取视频帧进行处理,并实时播放处理得到的多媒体帧,相邻两个目标多媒体片段对应的视频轨道的调整时间段的重合部分为相邻两个目标多媒体片段之间的第二拼接过渡效果对应的时间段,对第二拼接过渡效果对应的时间段内读取的视频帧进行的处理至少用于实现本第二拼接过渡效果。
本发明实施例提供的方法,由于创建了多个视频轨道,每个目标多媒体片段记载道不同的视频轨道上,因此,当需要改变拼接过渡效果时,若拼接过渡效果的时间长度改变,仅需要重新确定改变后的第二拼接过渡效果的起止时间,并从对应的视频轨道上逐帧读取视频帧进行处理即可。因此,较之现有技术中只能替换时间长度不变的拼接过渡效果,本发明实施例提供的方法可以灵活替换不同时间长度的拼接过渡效果。
在此基础上,在非上述调整时间段,可以调用创建的上述目标多媒体文件进行同步播放。
在非调整时间段播放已经创建的目标多媒体文件,而不是重新进行目标多媒体片段的拼接处理,可以进一步提高处理效率,节省处理资源。
第二方面,本发明实施例提供一种移动终端,包括处理器和存储器:
所述存储器用于存储执行上述任意方法实施例的程序,
所述处理器被配置为用于执行所述存储器中存储的程序。
本发明实施例提供的移动终端,创建多个视频轨道,每个目标多媒体片段加载到不同的视频轨道上,按时序从各播放时间段对应的视频轨道上逐帧读取视频帧进行处理。由于每个目标多媒体片段加载在不同的视频轨道上,可以分别独立进行加载,实时进行处理并播放,能够满足实时性的需求。除此之外,本发明实施例中,由于相邻的两个多媒体片段加载到不同的视频轨道上,因此可以在重合的时间段分别独立进行逐帧读取,并进行合并渲染,从而可以实现动态过渡效果。
第三方面,本发明实施例提供一种多媒体片段拼接装置,包括:
拼接处理信息确定模块,用于接收到多媒体片段拼接处理请求后,确定目标多媒体片段、目标多媒体片段的拼接顺序、每相邻两个目标多媒体片段之间的第一拼接过渡效果、每个第一拼接过渡效果的起止时间和目标多媒体文件的时间长度;
视频轨道创建模块,用于根据目标多媒体片段的拼接顺序、各个第一拼接过渡效果的起止时间和目标多媒体文件的时间长度确定每个目标多媒体片段对应的视频轨道的播放时间段,根据视频轨道的播放时间段创建视频轨道,每个目标多媒体片段分别对应一个视频轨道;
多媒体片段加载模块,用于将每个目标多媒体片段分别加载到对应的视频轨道上;
多媒体片段实时处理模块,用于按时序从各播放时间段对应的视频轨道上逐帧读取视频帧进行处理,并实时播放处理得到的多媒体帧,相邻两个目标多媒体片段对应的视频轨道的播放时间段的重合部分为相邻两个目标多媒体片段之间的第一拼接过渡效果对应的时间段,对每相邻两个目标多媒体片段之间的第一拼接过渡效果对应的时间段内读取的视频帧进行的处理至少用于实现本第一拼接过渡效果;
多媒体文件创建模块,用于根据处理得到的多媒体帧创建目标多媒体文件。
本发明实施例提供的装置,创建多个视频轨道,每个目标多媒体片段加载到不同的视频轨道上,按时序从各播放时间段对应的视频轨道上逐帧读取视频帧进行处理。由于每个目标多媒体片段加载在不同的视频轨道上,可以分别独立进行加载,实时进行处理并播放,能够满足实时性的需求。除此之外,本发明实施例中,由于相邻的两个多媒体片段加载到不同的视频轨道上,因此可以在重合的时间段分别独立进行逐帧读取,并进行合并渲染,从而可以实现动态过渡效果。
进一步地,上述多媒体片段实时处理模块具体可以用于:加载多媒体播放器,并实时回调多媒体播放器的时间戳;从回调的时间戳所在的播放时间段对应的视频轨道上读取同步视频帧进行处理,同步视频帧为与回调的时间戳同步的视频帧;通过多媒体播放器实时播放处理得到的多媒体帧。
本发明实施例提供的装置,首先加载多媒体播放器,并通过多媒体播放器的时间戳读取同步视频帧,对读取到的同步视频帧进行处理并通过多媒体播放器实时播放,从而驱动多媒体播放器的时间轴。通过时间戳-同步视频帧的双向驱动,简单、可靠地实现了实时预览多媒体片段拼接结果。
进一步地,一种实现方式中,每个视频轨道的起止时间为本视频轨道的播放时间段的起止时间,相应的,为实现从回调的时间戳所在的播放时间段对应的视频轨道上读取同步视频帧进行处理,多媒体片段实时处理模块可以用于:查找存在同步视频帧的视频轨道,从查找到的视频轨道上读取同步视频帧进行处理。这种实现方式中,视频轨道的时间长度与其播放时间段的时间长度相同,那么,在第一拼接过渡效果对应的时间段之外读取同步视频帧时,可以快速查找到对应的视频轨道并从中读取同步视频帧。另一种实现方式中,每个视频轨道标记有本视频轨道的播放时间段的起止时间,相应的,为了实现从回调的时间戳所在的播放时间段对应的视频轨道上读取同步视频帧进行处理,多媒体片段实时处理模块可以用于:确定回调的时间戳所在的播放时间段,从确定的播放时间段对应的视频轨道上读取同步视频帧进行处理。这种实现方式中,视频轨道的时间长度与其播放时间段的时间长度不相同,但因为预先确定了视频轨道的播放时间段的起止时间,因此可以简单快速地确定回调的时间戳所在的播放时间段,进而确定需要读取同步视频帧的视频轨道。
在上述任意装置实施例的基础上,加载到对应的视频轨道上的目标多媒体片段的时间长度小于对应的视频轨道的播放时间段的时间长度,相应的,按时序从各播放时间段对应的视频轨道上逐帧读取视频帧进行处理之前,拼接处理信息确定模块还可以用于确定每个第一拼接过渡效果对应的过渡多媒体片段;多媒体片段加载模块还可以在每个视频轨道的空闲时间段上加载空白多媒体片段或无背景多媒体片段,空闲时间段为未加载目标多媒体片段的第一拼接过渡效果对应的时间段;若需要读取空闲时间段上的视频帧,多媒体片段实时处理模块还可以用于利用空闲时间段对应的第一拼接过渡效果对应的过渡多媒体片段逐帧替换空白多媒体片段或无背景多媒体片段。
本发明实施例中,若第一拼接过渡效果不是或不仅是通过目标多媒体片段包括的多媒体帧实现的,那么,创建的视频轨道的播放时间段既包括播放目标多媒体片段的时间段,也包括播放利用过渡多媒体片段实现第一拼接过渡效果的时间段。相应的,不需要预先基于过渡多媒体片段生成背景视频并加载到视频轨道上,而是利用空白多媒体片段或者无背景多媒体片段进行占位,在需要进行过渡效果渲染处理时,再读取过渡多媒体片段并逐帧替换占位用的空白多媒体片段或无背景多媒体片段。这种处理方式由于无需预先生成背景视频,因此提高了多媒体片段拼接的效率,降低了延迟。另外,若过渡多媒体片段为图像,可以直接加载原图进行实时处理,避免出现分辨率不同导致的图像黑边现象。
在此基础上,若第一拼接过渡效果是利用相邻的后续多媒体片段以及过渡多媒体片段实现的,那么,加载到对应的视频轨道上的目标多媒体片段的时间长度为对应的视频轨道的播放时间段的时间长度与本目标多媒体片段的后续第一拼接过渡效果对应的时间段的时间长度之差,其中,本目标多媒体片段的后续第一拼接过渡效果为本目标多媒体片段与相邻的后续目标多媒体片段之间的第一拼接过渡效果。若第一拼接过渡效果是利用相邻的前序多媒体片段和过渡多媒体片段实现的,那么,加载到对应的视频轨道上的目标多媒体片段的时间长度为对应的视频轨道的播放时间段的时间长度与本目标多媒体片段的前续第一拼接过渡效果对应的时间段的时间长度之差,本目标多媒体片段的前续第一拼接过渡效果为本目标多媒体片段与相邻的前续目标多媒体片段之间的第一拼接过渡效果。若第一拼接过渡效果完全是利用过渡多媒体片段实现的,那么,加载到对应的视频轨道上的目标多媒体片段的时间长度为所述对应的视频轨道的非重合播放时间段的时间长度,其中,非重合播放时间段为视频轨道的播放时间段中第一拼接过渡效果对应的时间段之外的部分。
在上述任意装置实施例的基础上,拼接处理信息确定模块还可以在接收到调整拼接过渡效果请求后,确定待调整的第一拼接过渡效果、每个待调整的第一拼接过渡效果对应的第二拼接过渡效果、和第二拼接过渡效果的起止时间;视频轨道创建模块还可以根据第二拼接过渡效果的起止时间,重新确定每个待调整的第一拼接过渡效果对应的视频轨道的播放时间段;通过对每个待调整的第一拼接过渡效果对应的视频轨道前后两次分别确定的播放时间段取并集,确定每个待调整的第一拼接过渡效果对应的视频轨道对应的调整时间段;多媒体片段实时处理模块还可以从各调整时间段对应的视频轨道上逐帧读取视频帧进行处理,并实时播放处理得到的多媒体帧,相邻两个目标多媒体片段对应的视频轨道的调整时间段的重合部分为相邻两个目标多媒体片段之间的第二拼接过渡效果对应的时间段,对第二拼接过渡效果对应的时间段内读取的视频帧进行的处理至少用于实现本第二拼接过渡效果。
本发明实施例提供的装置,由于创建了多个视频轨道,每个目标多媒体片段记载道不同的视频轨道上,因此,当需要改变拼接过渡效果时,若拼接过渡效果的时间长度改变,仅需要重新确定改变后的第二拼接过渡效果的起止时间,并从对应的视频轨道上逐帧读取视频帧进行处理即可。因此,较之现有技术中只能替换时间长度不变的拼接过渡效果,本发明实施例提供的装置可以灵活替换不同时间长度的拼接过渡效果。
在此基础上,在非上述调整时间段,多媒体片段实时处理模块可以调用创建的上述目标多媒体文件进行同步播放。
在非调整时间段播放已经创建的目标多媒体文件,而不是重新进行目标多媒体片段的拼接处理,可以进一步提高处理效率,节省处理资源。
第四方面,本发明实施例提供一种计算机可读存储介质,存储有执行上述任意方法实施例的程序。
本发明实施例提供的计算机可读存储介质,创建多个视频轨道,每个目标多媒体片段加载到不同的视频轨道上,按时序从各播放时间段对应的视频轨道上逐帧读取视频帧进行处理。由于每个目标多媒体片段加载在不同的视频轨道上,可以分别独立进行加载,实时进行处理并播放,能够满足实时性的需求。除此之外,本发明实施例中,由于相邻的两个多媒体片段加载到不同的视频轨道上,因此可以在重合的时间段分别独立进行逐帧读取,并进行合并渲染,从而可以实现动态过渡效果。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
在本发明的说明书和权利要求书及上述附图中的描述的一些流程中,可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。
本发明实施例提供一种多媒体片段拼接方法,适用于在移动终端上执行,以实现实时预览。如图1所示,本发明实施例提供的多媒体片段拼接方法包括如下操作:
步骤101、接收到多媒体片段拼接处理请求后,确定目标多媒体片段、目标多媒体片段的拼接顺序、每相邻两个目标多媒体片段之间的第一拼接过渡效果、每个第一拼接过渡效果的起止时间和目标多媒体文件的时间长度。
本发明实施例中,多媒体片段拼接处理请求通常是响应用户的输入而生成的。例如,用户触发了移动终端上某个应用程序的多媒体片段拼接功能,移动终端的应用程序检测到该触发事件并响应。该触发事件即可视为多媒体片段拼接处理请求。其中,该步骤中的各个信息也均是根据用户的输入确定的。
本发明实施例中,将用于拼接的素材称为目标多媒体片段,其可以是视频,也可以是静态图像,还可以是动态图像。
本发明实施例中,将响应多媒体片段拼接处理请求而选择并实现的拼接过渡效果称为第一拼接过渡效果。将在此基础上改变的拼接技术效果称为第二拼接过渡效果。
步骤102、根据上述目标多媒体片段的拼接顺序、各个第一拼接过渡效果的起止时间和目标多媒体文件的时间长度确定每个目标多媒体片段对应的视频轨道的播放时间段,根据视频轨道的播放时间段创建视频轨道。
其中,每个目标多媒体片段分别对应一个视频轨道。目标多媒体片段与视频轨道是一一对应的关系。
其中,视频轨道的播放时间段是指后续加载到该视频轨道上的目标多媒体片段的播放时间段。
本发明实施例中,可以通过AVVideoCompostioning(AV视频合成)协议实现多视频轨道的创建。具体可以在AVVideoCompostioning协议框架下创建自定义类AVVideoCompostion,通过AVVideoCompostion创建多个视频轨道。
步骤103、将每个目标多媒体片段分别加载到对应的视频轨道上。
步骤104、按时序从各播放时间段对应的视频轨道上逐帧读取视频帧进行处理,并实时播放处理得到的多媒体帧。
其中,相邻两个目标多媒体片段对应的视频轨道的播放时间段的重合部分为该相邻两个目标多媒体片段之间的第一拼接过渡效果对应的时间段,对每相邻两个目标多媒体片段之间的第一拼接过渡效果对应的时间段内读取的视频帧进行的处理至少用于实现本第一拼接过渡效果。
本发明实施例中,目标多媒体片段相邻是指其拼接顺序相邻。
本发明实施例中,将加载到视频轨道的多媒体片段的帧称为视频帧,而将处理得到的帧称为多媒体帧。这样的描述仅是为了对不同处理阶段的处理结果加以区分,不意味着二者在数据结构、数据形式等方面必然存在区别。
步骤105、根据上述处理得到的多媒体帧创建上述目标多媒体文件。
本发明实施例提供的方法,创建多个视频轨道,每个目标多媒体片段加载到不同的视频轨道上,按时序从各播放时间段对应的视频轨道上逐帧读取视频帧进行处理。由于每个目标多媒体片段加载在不同的视频轨道上,可以分别独立进行加载,实时进行处理并播放,能够满足实时性的需求。现有技术中,仅通过缓存的单帧图像实现拼接过渡效果,因此在整个拼接过渡效果播放过程中,始终播放的是相同的图像,称之为静态过渡效果。本发明实施例中,由于相邻的两个多媒体片段加载到不同的视频轨道上,因此可以在重合的时间段分别独立进行逐帧读取,并进行合并渲染,对每帧图像进行动态替换,可以实时预览实时合成,并可以实现动态过渡效果。
在一个具体的应用场景中,用户打开了移动终端上的应用程序A,应用程序A首先加载图2所示的人机交互界面,图2所示的人机交互界面显示有该应用程序A可以实现的各个功能对应的触控按钮,响应用户对“多媒体片段拼接”触控按钮的触发,加载如图3所示的人机交互界面,在图3所示的人机交互界面上显示移动终端的“相册”文件夹里存储的视频。用户通过图3所示的人机交互界面选择视频7和视频8作为目标多媒体片段,并且应用程序通过检测用户的选择顺序确定视频7与视频8的拼接顺序:视频7作为第一个目标多媒体片段,视频8作为第二个目标多媒体片段。应用程序A响应检测到图3所示的人机交互界面上的“完成”触控按钮被触发,加载图4所示的人机交互界面。在图4所示的人机交互界面上显示有加载的多媒体播放器的播放器界面、多媒体播放器触控按钮(“播放”按钮)、逐帧展示目标多媒体片段的视频帧的预览界面、“裁剪”触控按钮以及“效果”触控按钮。其中,应用程序A如果在预览界面检测到用户的滑动触控事件,则根据滑动方向滑动预览窗口,实时展示预览窗口内的视频帧。如果在预览界面检测到用户的点击触控事件,并且检测到“裁剪”按钮的触控事件,则如图5所示,加载裁剪窗口以覆盖预览界面,用户可通过加载窗口边缘的控件实现对点击选择的目标多媒体片段的时间长度的裁剪。如果在预览界面上同时加载有视频7和视频8的视频帧,则会在视频7与视频8的边界处显示有拼接标记(如图4所示的圆圈),若此时检测到“效果”按钮的触控事件,加载如图6所示的效果窗口以覆盖预览界面,效果窗口显示有多种拼接过度效果。若检测到某一拼接过渡效果的选中触控事件,则在播放器界面实时预览拼接过渡效果。
在上述具体的应用场景中,检测到“多媒体片段拼接”触控按钮的触发事件即是接收到多媒体片段拼接处理请求。检测到用户选择的视频以及选择顺序,即意味着确定目标多媒体片段以及目标多媒体片段的拼接顺序。检测到拼接过渡效果的选择触控事件,意味着确定了相邻两个目标多媒体片段之间的第一拼接过渡效果。检测到用户选择的目标多媒体片段的时间长度,也就确定了目标多媒体文件的时间长度。
应当指出的是,在上述应用场景中,第一拼接过渡效果的时间长度是固定的,在其他应用场景中,也允许用户选择拼接过渡效果的时间长度,或者不同拼接过渡效果对应的时间长度不同,那么,当确定了用户选择的拼接过渡效果,也就可以确定该拼接过渡效果的时间长度。
应当指出的是,在上述应用场景中,第一拼接过渡效果的起止时间也是相对固定的,即视频7的最后1秒。因此,在确定了目标多媒体片段后,即可确定第一拼接过渡效果的起止时间。在其他应用场景中,若不是或不仅是利用目标多媒体片段的视频帧实现拼接过渡效果,那么,需要额外确定第一拼接过渡效果的起止时间。其具体实现方式可以根据应用场景的业务逻辑需要确定,作为举例而非限定,第一拼接过渡效果的起始时间为前序目标多媒体片段的结束时刻,第一拼接过渡效果的结束时间为起始时间之后的一秒钟。
在上述具体的应用场景中,由于提供了“裁剪”的功能,因此,目标多媒体文件的时间长度是动态可调的。那么,可以在用户选择了视频7和视频8作为目标多媒体片段之后,即确定目标多媒体文件的时间长度为视频7和视频8的总时间长度减去1秒钟(第一拼接过渡效果的时间长度)。假设视频7和视频8的时间长度均为15秒钟,则目标多媒体文件的时间长度为29秒。相应的,即可确定出视频7对应的视频轨道的播放时间段为0至15秒,视频8对应的视频轨道的播放时间段为14至29秒,进而创建视频轨道,并将视频7和视频8分别加载到对应的视频轨道上。
若用户通过“裁剪”功能裁剪掉视频7的第0至3秒,则裁剪后的视频7为12秒,此时,可重新确定相关信息并修改视频轨道的参数。
若用户通过“效果”功能选择了第一拼接过渡效果,则在该第一拼接过渡效果对应的时间段(例如第14至第15秒),分别从视频7和视频8对应的视频轨道上逐帧读取视频帧进行处理并实时播放。例如,在第14秒,分别读取两个视频轨道上第14秒对应的视频帧,根据用户选择的第一拼接过渡效果对读取到的两个视频帧进行相应的处理。
若用户点击了“播放”触控按钮,则在第0至第14秒,从视频7对应的视频轨道上逐帧读取视频7的视频帧进行处理并实时播放;在第14至15秒,分别从视频7和视频8对应的视频轨道上逐帧读取视频7和视频8的视频帧进行处理并实时播放;在第15至29秒,从视频8对应的视频轨道上逐帧读取视频帧进行处理并实时播放。
如上所述,本发明实施例可以通过AVVideoCompostioning协议创建多个视频轨道。更具体的,可以在检测到“多媒体片段拼接”触控按钮的触发事件(即接收到视频片段拼接处理请求)后,调用AVPlayerItem,由AVPlayerItem控制多媒体播放器的状态以及播放资源管理,播放资源管理具体可以是:通过AVVideoCompostioning协议框架下的自定义类AVVideoCompostion创建两个视频轨道,分别加载视频7和视频8,按时序在相应的视频轨道上读取视频帧缓存,对缓存中的视频帧进行处理,并控制多媒体播放器实时播放处理得到的多媒体帧。
将处理得到的多媒体帧按时序排列构成的多媒体帧序列,将该多媒体帧序列保存为目标多媒体文件。
本发明实施例仅通过一个具体的应用场景对提供的方法进行详尽说明,这并不意味着本发明实施例提供的方法必然按照上述应用场景所展示的业务逻辑实现。如果本发明实施例提供的方法应用在其他应用场景中,多媒体片段拼接处理请求的形式可能会有所不同,目标多媒体片段及其拼接顺序,第一拼接过渡效果及其起止时间、目标多媒体文件的时间长度等等这些信息的确定方式也会发生变化。目标多媒体片段的数量也可能不同,例如可以选择三个、四个甚至更多的目标多媒体片段。
本发明实施例中,创建视频轨道的一种实现方式中,创建时间长度与其播放时间段的时间长度一致的视频轨道。也就是说,每个视频轨道的起止时间为本视频轨道的播放时间段的起止时间。那么,仍以上述具体应用场景为例,在第0至14秒,仅需要读取视频7的视频帧,而这段时间不存在视频8对应的视频轨道,因此,也仅能够在视频7对应的视频轨道上读取到视频7的视频帧,无需考虑视频轨道和/或视频帧的选择问题,简化了处理过程。
创建视频轨道的另一种实现方式中,创建时间长度大于其播放时间段的时间长度的视频轨道,并为视频轨道添加本视频轨道的播放时间段的起止时间的标记。具体的,创建的每个视频轨道的时间长度可以均为目标多媒体文件的时间长度。那么,仍以上述具体应用场景为例,在进行视频帧处理的过程中,在第0秒检测到视频7对应的视频轨道的开始时间标记,未检测到视频8对应的视频轨道的开始时间标记,则在视频7对应的视频轨道上逐帧读取视频帧进行处理,在第14秒检测到视频8对应的视频轨道的开始时间标记,则还开始从视频8对应的视频轨道上逐帧读取视频帧进行处理,在第15秒检测到视频7对应的视频轨道的结束时间标记,则停止从视频7对应的视频轨道上读取视频帧,但继续从视频8对应的视频轨道上读取视频帧,直至第29秒检测到视频8对应的视频轨道的结束时间标记,则停止从视频8对应的视频轨道上读取视频帧。在视频轨道的时间长度与其播放时间段的时间长度不一致的情况下,通过标记播放时间段的起止时间来确保正确读取视频帧。另外,根据上述应用场景可知,实际应用中,用户可能会多次调整目标多媒体帧的时间长度,那么就需要相应地调整视频轨道的播放时间段。因此,创建更长的视频轨道,在这种情况下,仅需要修改视频轨道的起始时间标记即可简单、快速地改变视频轨道。
无论采用何种方式创建视频轨道,从视频轨道上逐帧读取视频帧进行处理并实时播放的实现方式可以是:加载多媒体播放器,并实时回调多媒体播放器的时间戳;从回调的时间戳所在的播放时间段对应的视频轨道上读取同步视频帧进行处理,同步视频帧为与回调的时间戳同步的视频帧;通过多媒体播放器实时播放处理得到的多媒体帧。
仍以上述应用场景为例,若用户点击了“播放”按钮,则实时回调多媒体播放器当前的播放进度对应的时间戳,该时间戳可以是时间信息,也可以是帧序号信息。若时间戳为时间信息,假设当前回调的时间戳为0分01秒300毫秒,则确定该时间戳在1至14秒这一播放时间段,则从视频7对应的视频轨道上读取0分01秒300毫秒处的视频帧(即为同步视频帧)进行处理,假设当前回调的时间戳为0分14秒600毫秒,则确定该时间戳在1至14秒这一播放时间段,也在14至29秒这一播放时间段,则从视频7和视频8对应的视频轨道上分别读取0分01秒300毫秒处的视频帧(即为同步视频帧),对这两个同步视频帧进行融合处理以实现拼接过渡效果。通过实时播放处理得到的多媒体帧,则可以驱动多媒体播放器的播放进程。
本发明实施例提供的方法,首先加载多媒体播放器,并通过多媒体播放器的时间戳读取同步视频帧,对读取到的同步视频帧进行处理并通过多媒体播放器实时播放,从而驱动多媒体播放器的时间轴。通过时间戳-同步视频帧的双向驱动,简单、可靠地实现了实时预览多媒体片段拼接结果。
在此基础上,若每个视频轨道的起止时间为本视频轨道的播放时间段的起止时间,相应的,从回调的时间戳所在的播放时间段对应的视频轨道上读取同步视频帧进行处理的实现方式包括:查找存在同步视频帧的视频轨道,从查找到的视频轨道上读取同步视频帧进行处理。仍以上述应用场景为例,假设当前回调的时间戳指示的时间为1秒,由于视频8对应的视频轨道还未开始,因此,只能在视频7对应的视频轨道上查找到同步视频帧。这种实现方式中,视频轨道的时间长度与其播放时间段的时间长度相同,那么,在第一拼接过渡效果对应的时间段之外读取同步视频帧时,可以快速查找到对应的视频轨道并从中读取同步视频帧。若每个视频轨道标记有本视频轨道的播放时间段的起止时间,相应的,从回调的时间戳所在的播放时间段对应的视频轨道上读取同步视频帧进行处理的实现方式可以包括:确定回调的时间戳所在的播放时间段,从确定的播放时间段对应的视频轨道上读取同步视频帧进行处理。仍以上述应用场景为例,假设回调的时间戳指示的时间为1秒,此时已经检测到视频7对应的视频轨道的开始时间标记,但还未检测到结束时间标记,因此当前回调的时间戳在视频7对应的视频轨道的播放时间段。这种实现方式中,视频轨道的时间长度与其播放时间段的时间长度不相同,但因为预先确定了视频轨道的播放时间段的起止时间,因此可以简单快速地确定回调的时间戳所在的播放时间段,进而确定需要读取同步视频帧的视频轨道。
上述应用场景中,具体是使用视频7的第14至15秒以及视频8的第0至1秒内的视频帧序列实现拼接过渡效果。在实际应用中,也可能不使用或者不仅使用目标多媒体片段上的视频帧序列实现拼接过渡效果。那么加载到对应的视频轨道上的目标多媒体片段的时间长度小于对应的视频轨道的播放时间段的时间长度。相应的,按时序从各播放时间段对应的视频轨道上逐帧读取视频帧进行处理之前,还可以确定每个第一拼接过渡效果对应的过渡多媒体片段;在每个视频轨道的空闲时间段上加载空白多媒体片段或无背景多媒体片段,空闲时间段为未加载目标多媒体片段的第一拼接过渡效果对应的时间段;若需要读取空闲时间段上的视频帧,利用空闲时间段对应的第一拼接过渡效果对应的过渡多媒体片段逐帧替换空白多媒体片段或无背景多媒体片段。其中,过渡多媒体片段可以是用户选择或输入的,也可以是用户选择的拼接过渡效果关联的。
例如,视频8上的视频帧不参与拼接过渡效果,仅利用视频7的第14至15秒的视频帧序列以及指定的用于实现拼接过渡效果的多媒体片段(过渡多媒体片段,可以是视频、静态图像、动态图像)实现拼接过渡效果。那么,视频8对应的视频轨道的播放时间段仍然为14至29秒,但其中的14至15秒加载空白视频进行占位,在空白视频之后加载视频8。
本发明实施例中,若第一拼接过渡效果不是或不仅是通过目标多媒体片段包括的多媒体帧实现的,那么,创建的视频轨道的播放时间段既包括播放目标多媒体片段的时间段,也包括播放利用过渡多媒体片段实现第一拼接过渡效果的时间段。相应的,不需要预先基于过渡多媒体片段生成背景视频并加载到视频轨道上,而是利用空白多媒体片段或者无背景多媒体片段进行占位,在需要进行过渡效果渲染处理时,再读取过渡多媒体片段并逐帧替换占位用的空白多媒体片段或无背景多媒体片段。这种处理方式由于无需预先生成背景视频,因此提高了多媒体片段拼接的效率,降低了延迟。另外,若过渡多媒体片段为图像,可以直接加载原图进行实时处理,避免出现分辨率不同导致的图像黑边现象。
在此基础上,若第一拼接过渡效果是利用相邻的后续多媒体片段以及过渡多媒体片段实现的,那么,加载到对应的视频轨道上的目标多媒体片段的时间长度为对应的视频轨道的播放时间段的时间长度与本目标多媒体片段的后续第一拼接过渡效果对应的时间段的时间长度之差,其中,本目标多媒体片段的后续第一拼接过渡效果为本目标多媒体片段与相邻的后续目标多媒体片段之间的第一拼接过渡效果。若第一拼接过渡效果是利用相邻的前序多媒体片段和过渡多媒体片段实现的,那么,加载到对应的视频轨道上的目标多媒体片段的时间长度为对应的视频轨道的播放时间段的时间长度与本目标多媒体片段的前续第一拼接过渡效果对应的时间段的时间长度之差,本目标多媒体片段的前续第一拼接过渡效果为本目标多媒体片段与相邻的前续目标多媒体片段之间的第一拼接过渡效果。若第一拼接过渡效果完全是利用过渡多媒体片段实现的,那么,加载到对应的视频轨道上的目标多媒体片段的时间长度为所述对应的视频轨道的非重合播放时间段的时间长度,其中,非重合播放时间段为视频轨道的播放时间段中第一拼接过渡效果对应的时间段之外的部分。
在上述任意方法实施例的基础上,还可以在接收到调整拼接过渡效果请求后,确定待调整的第一拼接过渡效果、每个待调整的第一拼接过渡效果对应的第二拼接过渡效果、和第二拼接过渡效果的起止时间;根据第二拼接过渡效果的起止时间,重新确定每个待调整的第一拼接过渡效果对应的视频轨道的播放时间段;通过对每个待调整的第一拼接过渡效果对应的视频轨道前后两次分别确定的播放时间段取并集,确定每个待调整的第一拼接过渡效果对应的视频轨道对应的调整时间段;从各调整时间段对应的视频轨道上逐帧读取视频帧进行处理,并实时播放处理得到的多媒体帧,相邻两个目标多媒体片段对应的视频轨道的调整时间段的重合部分为相邻两个目标多媒体片段之间的第二拼接过渡效果对应的时间段,对第二拼接过渡效果对应的时间段内读取的视频帧进行的处理至少用于实现本第二拼接过渡效果。
其中,确定第二拼接过渡效果的相关信息的实现方式以及视频帧读取及处理的实现方式可以参照上述方法实施例的描述,此处不再赘述。
仍以上述应用场景为例,假设用户通过“效果”功能更换了拼接过渡效果。那么,再次检测到“效果”触控按钮被点击的触控事件,即接收到调整拼接过渡效果请求。假设第二拼接过渡效果对应的时间长度为2秒,具体是从13秒至15秒。那么,视频8对应的视频轨道的播放时间段为13至28秒。这种情况下,相当于提前1秒播放视频8,因此,13至28秒为调整时间段。假设第二拼接过渡效果对应的时间长度为2秒,具体是从13秒至15秒,且第二拼接过渡效果利用视频7的第13至15秒之间的视频帧序列以及指定的过渡多媒体片段实现,那么,视频8对应的视频轨道的播放时间段为13至30秒。这种情况下,视频8对应的视频轨道前后两次确定的播放时间段的并集为第13至30秒,这段时间为调整时间段。
本发明实施例提供的方法,由于创建了多个视频轨道,每个目标多媒体片段记载道不同的视频轨道上,因此,当需要改变拼接过渡效果时,若拼接过渡效果的时间长度改变,仅需要重新确定改变后的第二拼接过渡效果的起止时间,并从对应的视频轨道上逐帧读取视频帧进行处理即可。因此,较之现有技术中只能替换时间长度不变的拼接过渡效果,本发明实施例提供的方法可以灵活替换不同时间长度的拼接过渡效果。
在此基础上,在非上述调整时间段,可以调用创建的上述目标多媒体文件进行同步播放。
在非调整时间段播放已经创建的目标多媒体文件,而不是重新进行目标多媒体片段的拼接处理,可以进一步提高处理效率,节省处理资源。
本发明实施例还提供一种移动终端,包括处理器和存储器:
所述存储器用于存储执行上述任意方法实施例的程序,
所述处理器被配置为用于执行所述存储器中存储的程序。
本发明实施例提供的移动终端,本发明实施例提供的装置,创建多个视频轨道,每个目标多媒体片段加载到不同的视频轨道上,按时序从各播放时间段对应的视频轨道上逐帧读取视频帧进行处理。由于每个目标多媒体片段加载在不同的视频轨道上,可以分别独立进行加载,实时进行处理并播放,能够满足实时性的需求。除此之外,本发明实施例中,由于相邻的两个多媒体片段加载到不同的视频轨道上,因此可以在重合的时间段分别独立进行逐帧读取,并进行合并渲染,从而可以实现动态过渡效果。
如图7所示,本发明实施例提供一种多媒体片段拼接装置,包括:
拼接处理信息确定模块701,用于接收到多媒体片段拼接处理请求后,确定目标多媒体片段、目标多媒体片段的拼接顺序、每相邻两个目标多媒体片段之间的第一拼接过渡效果、每个第一拼接过渡效果的起止时间和目标多媒体文件的时间长度;
视频轨道创建模块702,用于根据目标多媒体片段的拼接顺序、各个第一拼接过渡效果的起止时间和目标多媒体文件的时间长度确定每个目标多媒体片段对应的视频轨道的播放时间段,根据视频轨道的播放时间段创建视频轨道,每个目标多媒体片段分别对应一个视频轨道;
多媒体片段加载模块703,用于将每个目标多媒体片段分别加载到对应的视频轨道上;
多媒体片段实时处理模块704,用于按时序从各播放时间段对应的视频轨道上逐帧读取视频帧进行处理,并实时播放处理得到的多媒体帧,相邻两个目标多媒体片段对应的视频轨道的播放时间段的重合部分为相邻两个目标多媒体片段之间的第一拼接过渡效果对应的时间段,对每相邻两个目标多媒体片段之间的第一拼接过渡效果对应的时间段内读取的视频帧进行的处理至少用于实现本第一拼接过渡效果;
多媒体文件创建模块705,用于根据处理得到的多媒体帧创建目标多媒体文件。
本发明实施例提供的装置,创建多个视频轨道,每个目标多媒体片段加载到不同的视频轨道上,按时序从各播放时间段对应的视频轨道上逐帧读取视频帧进行处理。由于每个目标多媒体片段加载在不同的视频轨道上,可以分别独立进行加载,实时进行处理并播放,能够满足实时性的需求。除此之外,本发明实施例中,由于相邻的两个多媒体片段加载到不同的视频轨道上,因此可以在重合的时间段分别独立进行逐帧读取,并进行合并渲染,从而可以实现动态过渡效果。
本发明实施例提供的装置具体实现方式可以参照上述方法实施例的描述,此处不再赘述。
本发明实施例提供一种计算机可读存储介质,存储有执行上述任意方法实施例的程序。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁盘或光盘等。
以上对本发明实施例所提供的一种移动终端进行了详细介绍,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
上述所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。