具体实施方式
下面,将参考附图详细地描述根据本申请的示例实施例。显然,所描述的实施例仅仅是本申请的一部分实施例,而不是本申请的全部实施例,应理解,本申请不受这里描述的示例实施例的限制。
申请概述
如上所述,如果将软植入广告与源视频一起编码后合成单个视频流并播放,这会带来以下几个问题。
首先,由于是将源视频作为背景,将广告视频作为前景叠加在背景视频上,前景的视频完全将背景视频覆盖,在前景视频的显示区域内完全看不到背景视频,只能够实现画中画效果。
另外,改变叠加的内容很困难,只能够重新使用工具压流,这导致软植入的广告的内容的灵活性差,不能进行动态更新。相应地,这对于用户的广告定制存在局限,也就是观看同一视频的不同用户也只能看到相同的软植入广告,无法针对用户进行定制。
针对上述技术问题,本申请的基本构思是获取单独的第一视频和第二视频,并基于所获取的第二视频的播放配置数据,在播放第一视频时播放经透明化处理的第二视频,从而实现在第一视频上叠加播放第二视频。
具体地,本申请提供的视频播放方法、视频播放装置和电子设备首先获取第一视频,然后获取第二视频的播放配置数据,最后基于所述播放配置数据,在播放所述第一视频时获取和播放经透明化处理的第二视频。
这样,本申请提供的视频播放方法、视频播放装置和电子设备能够同时分别获取彼此独立的第一视频和第二视频,并通过基于播放配置数据在播放第一视频时播放经透明化处理的第二视频来实现在第一视频上叠加播放第二视频,能够针对同一源视频叠加不同的视频,从而实现了叠加的视频的灵活性。
并且,因为可以针对同一源视频叠加不同的视频,也就是,每次播放第一视频时,可以获取不同的第二视频并基于其播放配置数据进行透明化处理并播放,从而对于观看同一源视频的不同用户,可以按照用户的具体情况选择用户感兴趣的第二视频向用户播放,实现了叠加视频的可定制化。
本申请提供的视频播放方法、视频播放装置和电子设备应用于播放视频的终端设备,例如用户的智能手机等,使得终端设备在播放第一视频时,能够在第一视频上叠加经透明化处理的第二视频,例如,第二视频可以是用于渲染的第二视频或者用作广告的第二视频,这就能够使得广告与源视频的内容相融合,并展现用于辅助源视频的播放的特殊效果,在对于广告的展现效果方面要显著优于目前的软植入广告,并且不会打断用户的观看体验。
在介绍了本申请的基本原理之后,下面将参考附图来具体介绍本申请的各种非限制性实施例。
示例性方法
图1图示了根据本申请实施例的视频播放方法的流程图。
如图1所示,根据本申请实施例的视频播放方法包括以下步骤。
S110,获取第一视频。这里,所述第一视频是用户观看的视频,比如电影或者剧集。具体地,如上所述,用于播放第一视频的终端设备可以从服务器端下载所述第一视频,并且,终端设备可以从服务器端下载所述第一视频的全部视频数据,也可以下载其中一部分视频数据(也就是,边下边播)。
然后,所下载的部分或者全部视频数据可以通过文件名、本地服务或者内存句柄的方式传送给用于播放第一视频的视频播放器。
另外,如果是采用边下边播的方式,用于播放第一视频的视频播放器可以根据当前待播放的数据量,即,未播放的视频数据的数据量来确定下载第一视频的视频数据的下载状态,即,可以确定暂停下载、恢复下载、加速下载或者减速下载。
因此,在根据本申请实施例的视频播放方法中,获取第一视频可以包括:从服务器端下载所述第一视频的至少一部分视频数据;以及,将所述至少一部分视频数据传送到第一视频的播放器。
并且,在上述视频播放方法中,获取第一视频可以进一步包括:确定所述至少一部分视频数据中未播放的视频数据的数据量;以及,基于所述数据量确定从所述服务器端下载所述第一视频的下载状态。
S120,获取第二视频的播放配置数据。在本申请实施例中,所述第二视频可以是第二视频,其也可以被称为特效素材,是包含特殊视觉效果的文件或者流媒体,其内容可以是广告,也可以是其它内容,比如台标,字幕,或者其它用于与所述第一视频一起向用户呈现的内容,比如向用户播报的通知等。
此外,所述特效素材也可以用于辅助第一视频的内容的播放,例如,当第一视频内出现欢快的场景时,所述特效素材可以是飞花、气泡等用于烘托欢乐气氛的内容。
并且,在本申请实施例中,第二视频的文件格式可以是通常的多媒体文件格式,如gif、mp4等,也可以包含图片、动图和/或视频。也就是,所述第二视频不仅限于视频本身,也可以指包含图像的视频,比如动态图像,或者静态视频。并且,本领域技术人员可以理解,在其它示例中,虽然以视频命名,所述第二视频也可以仅包含动态图像或者静态图像。
并且,所述播放配置数据除了包括所述第二视频的元数据,比如视频元数据,图像元数据(例如,视频或者图像的编码信息、帧率、分辨率)之外,还包括用于指示所述第二视频的播放信息的数据,其中包括所述第二视频相对于所述第一视频的播放的数据,例如,所述第二视频的下载地址,相对于所述第一视频的起播时间、播放时长和渲染区域等。此外,所述播放配置数据还可以包括加载时间和预加载时间,其中,加载时间用于表示播放第二视频所需的准备时间,而预加载时间用于表示下载第二视频所需的准备时间。这里,所述播放配置数据可以以私有文件或者流媒体的格式。
在本申请实施例中,所述第二视频及其播放配置数据也存储在服务器端,并在下载到终端设备之后,通过文件名、本地服务或者内存句柄等方式传送给第二视频的播放器。
因此,在根据本申请实施例的视频播放方法中,获取第二视频的播放配置数据包括:从服务器端下载所述第二视频的播放配置数据;以及,将所述第二视频的播放配置数据传送给第二视频的播放器。
S130,基于所述播放配置数据,在播放所述第一视频时获取和播放经透明化处理的第二视频。如上所述,第一视频的播放器从文件、本地服务或者内存中读取第一视频的视频数据,解码后按照时间顺序,例如按照呈现时间戳(Presentation Timestamp:PTS)顺序输出可在屏幕上显示的图像帧序列(例如,bitmap、yuv等格式)。同时,第二视频的播放器也按照播放配置数据,获取第二视频,例如将第二视频从源地址下载到本地文件、服务或者内存中,并从本地文件、服务或者内存中读取第二视频的数据,解码后按照时间顺序,例如根据PTS顺序输出可在屏幕上显示的图像帧序列(例如,bitmap、yuv等格式)。
在本申请实施例中,根据第二视频的播放配置文件,可以将第二视频的图像帧叠加在第一视频的预定的图像帧上,从而实现在第一视频上叠加播放第二视频。具体地,通过播放配置数据包括的所述第二视频的下载地址、起播时间、播放时长和渲染区域,可以在播放所述第一视频时,从所述第二视频的下载地址获取所述第二视频,对所述第二视频进行透明化处理,并从所述起播时间开始,在所述第一视频上的所述渲染区域上将进行了透明化处理的第二视频以所述播放时长进行播放。
也就是,在根据本申请实施例的视频播放方法中,所述播放配置数据至少包括所述第二视频的下载地址、起播时间、播放时长和渲染区域;以及,基于所述播放配置数据,在播放所述第一视频时获取和播放经透明化处理的第二视频,具体包括:在播放所述第一视频时,从所述第二视频的下载地址获取所述第二视频,对所述第二视频进行透明化处理,并在所述起播时间,在所述第一视频上的所述渲染区域上将进行了透明化处理的第二视频播放所述播放时长。
另外,如上所述,所述播放配置数据可能进一步包括加载时间和预加载时间,因此在播放第一视频时,需要在所述第二视频的下载时间提前所述预加载时间,从所述第二视频的下载地址获取所述第二视频;和,在播放所述第一视频时,在所述起播时间提前所述加载时间,在所述第一视频上的所述渲染区域播放经透明化处理的第二视频。
也就是,在根据本申请实施例的视频播放方法中,所述播放配置数据至少进一步包括加载时间和预加载时间;在播放所述第一视频时,从所述第二视频的下载地址获取所述第二视频,对所述第二视频进行透明化处理,并从所述起播时间开始,在所述第一视频上的所述渲染区域上将进行了透明化处理的第二视频播放所述播放时长具体包括:在播放所述第一视频时,在所述第二视频的下载时间提前所述预加载时间,从所述第二视频的下载地址获取所述第二视频;和,在播放所述第一视频时,在所述起播时间提前所述加载时间,在所述第一视频上的所述渲染区域播放经透明化处理的第二视频。
这样,根据本申请实施例的视频播放方法分别获取彼此独立的第一视频和第二视频,并基于播放配置数据在播放第一视频时叠加地播放第二视频,以实现在第一视频上叠加第二视频,这能够同时提高第一视频和所叠加的第二视频的展现效果。并且,在这种情况下,由于不会打断用户观看第一视频,也改善了用户的观看体验。
在根据本申请实施例的视频播放方法中,在第一视频上叠加播放第二视频时需要注意叠加的第二视频在播放时需要经过透明化处理,从而不遮挡播放的第一视频。具体地,第二视频的播放器输出的图像帧序列需要进行透明化处理,例如设置透明通道。
当然,本领域技术人员可以理解,在某些在前景叠加的第二视频不影响背景的第一视频的内容展现的场景下,也存在不需要对第二视频的图像帧进行透明化处理的情况。例如,所述第二视频的图像帧作为特效叠加在第一视频的图像帧内的空白区域上,例如路边的广告牌,墙上的海报等,即使第二视频的图像帧完全遮盖住背景图像中的这些特定部分,也不会对背景视频的展现产生任何影响。
关于第二视频的透明化处理的具体方式将在下文中进一步详细说明。
另外,在本申请实施例中,需要注意叠加的第二视频与第一视频在播放时的同步,也就是,如果第二视频的图像帧和第一视频的图像帧需要同步,则需要对第一视频的播放器和第二视频的播放器输出的两路图像帧序列进行同步。
当然,本领域技术人员同样可以理解,第二视频和第一视频也可能不需要同步,则第一视频的播放器和第二视频的播放器输出的两路图像帧序列可以直接存入帧缓冲器,分别在屏幕上显示。例如,第二视频的播放器输出的图像帧序列按照播放配置数据中的起播时间,插入第一视频的图像帧序列中的预定位置,以在播放第一视频时的预定时刻显示第二视频。并且,第二视频在屏幕上显示时也可以根据播放配置数据中的渲染区域,渲染到屏幕上的指定区域,以使得用户在播放的第一视频的预定位置看到展现的第二视频。
下面,将对根据本申请实施例的视频播放方法中的同步处理进行详细说明。
首先,基于所述第二视频的所述播放配置数据,确定所述第二视频是否需要与所述第一视频同步播放。如果响应于所述第二视频需要与所述第一视频同步播放,则对所述第二视频和所述第一视频各自的图像帧进行同步。然后,播放同步后的所述第二视频和所述第一视频。
因此,在根据本申请实施例的视频播放方法中,基于所述播放配置数据,在播放所述第一视频时获取和播放经透明化处理的第二视频包括:基于所述播放配置数据,确定所述第二视频是否需要与所述第一视频同步播放;响应于所述第二视频需要与所述第一视频同步播放,对所述第二视频和所述第一视频各自的图像帧进行同步;以及,在所述起播时间播放同步后的所述第一视频和所述第二视频。
具体地,在本申请实施例中,可以采用第二视频的图像帧的缓冲队列来预加载和缓存第二视频的图像帧,其中,预加载功能可以使第二视频的图像帧的起播更快,缓存功能可以用于调节播放速率,使第二视频的图像帧和第一视频的图像帧同步。
为了防止所述缓冲队列溢出,可以设置如果所述缓冲队列满,则所述第二视频播放器暂停输出第二视频的图像帧,而如果所述缓冲队列的长度小于一定数值,则所述第二视频播放器开始输出第二视频的图像帧。
为了实现同步,需要设置同步时钟。具体地,同步时钟可以是第一视频的图像帧的呈现时间戳(PTS),也可以是外源时钟。这里,呈现时间戳一般用于规定视频和动图的每一帧显示的相对时间。此外,同步时钟也可以是外源时钟,那么第一视频和第二视频都需要与外源时钟同步。下面,以同步时钟为第一视频的图像帧的呈现时间戳为例进行说明。
也就是,在根据本申请实施例的视频播放方法中,对所述第二视频和所述第一视频各自的图像帧进行同步包括:使用用于加载和缓存所述第二视频的图像帧的缓冲队列通过呈现时间戳进行所述第二视频和所述第一视频各自的图像帧的同步。
图2图示了根据本申请实施例的视频播放方法中的同步过程的示例的流程图。
如图2所示,所述同步过程的示例包括以下步骤。
S210,获取第一视频的播放器输出的第一视频的当前主图像帧。也就是,在本申请实施例中,基于所述第一视频的图像帧来进行第一视频和第二视频的同步。
S220,获取所述当前主图像帧的第一呈现时间戳。例如,所述第一呈现时间戳记为PTS1,即,同步时钟为第一视频的图像帧的呈现时间戳。
S230,基于所述第一呈现时间戳获得相对应的所述第二视频的同步图像帧的第二呈现时间戳。例如,所述第二呈现时间戳记为PTS2。由于所述第二视频的播放时间由播放配置数据指示,且播放时间是以第一视频的播放时间为时间轴的时间,因此特效起播时间用于表示以第一视频的视频帧为基准的第二视频的图像帧的播放时间。因此,PTS2=PTS1-特效起播时间。
另外,如果第二视频的图像帧需要预加载时间,则应该从PTS1进一步减去所述预加载时间。当然,本领域技术人员可以理解,通过如上所述的第二视频的图像帧的缓冲队列,可以指定用于播放第二视频的准备时间,减小第二视频的播放延时。
S240,确定PTS2是否大于等于0,也就是,如果PTS2小于0,说明第一视频的图像帧还没有相对应的第二视频的图像帧,则前进到S250,输出第一视频的图像帧。
S250,输出第一视频的图像帧。
S260,响应于PTS2大于等于0,在第二视频的图像帧的缓冲队列中查找与所述第一视频的当前主图像帧匹配的所述第二视频的当前特效图像帧。值得注意的是,在匹配时,可以允许一定的时间误差。
S270,在找到匹配的所述第二视频的当前特效图像帧之后,可以从所述缓冲队列中删除PTS小于PTS2的所有第二视频的图像帧,以避免缓冲队列溢出。
S280,确定是否找到匹配的当前特效图像帧。如果没有找到匹配的当前特效图像帧,则回到S250,输出第一视频的图像帧。否则,前进到步骤S290。
S390,输出相匹配的当前所述当前主图像帧和所述当前特效图像帧以进行播放。
值得注意的是,如果根据计算出来的PTS2,大于缓冲队列中的所有第二视频的图像帧,则说明缓冲队列中不存在需要播放的第二视频的图像帧,需要清空缓冲队列,并且进一步指示第二视频播放器基于所述第二呈现时间戳读取所述第二视频的数据。
因此,在根据本申请实施例的视频播放方法中,使用用于加载和缓存所述第二视频的图像帧的缓冲队列通过呈现时间戳进行所述第二视频和所述第一视频各自的图像帧的同步包括:获取所述第一视频的当前主图像帧的第一呈现时间戳;基于所述第一呈现时间戳获得相对应的所述第二视频的同步图像帧的第二呈现时间戳;基于所述第二呈现时间戳在所述缓冲队列中查找所述第二视频的当前特效图像帧;以及,播放所述当前主图像帧和所述当前特效图像帧。
并且,在上述视频播放方法中,进一步包括:响应于所述第二呈现时间戳小于所述缓冲队列中的所有特效图像帧的呈现时间戳,播放第一视频的当前主图像帧;以及,响应于所述第二呈现时间戳大于所述缓冲队列中的所有特效图像帧的呈现时间戳,清空所述缓冲队列,并基于所述第二呈现时间戳读取所述第二视频的数据。
对于输出的当前主图像帧和当前特效图像帧,为了增强播放时的同步效果,可以将其合并为同一图像帧,即,以当前主图像帧为背景,当前特效图像帧为前景叠加合成一张图像帧并输出。并且,如果之前进行了第二视频的图像帧的透明化,在合成时应当保持前景图像帧的透明属性,也就是,前景图像帧中透明的部分,在合成后应该能完全透出背景图像帧的内容,半透明的部分能部分透出(根据透明度透出)背景图像帧的内容,不透明的部分不透出背景图像帧的内容。并且,在合成时需要根据播放配置数据中指示的当前特效图像帧的渲染区域,把特效图像合成到当前主图像帧的指定区域。
这里,当前特效图像帧的渲染区域可以包括区域坐标,所述区域坐标可以是以正片视频维度为坐标系的坐标,通常是长方形或者正方形,并且至少要规定区域的某个角的坐标,区域的宽度和高度。
具体地,可以使用OpenGL的混合技术和离屏渲染技术实现了当前主图像帧和当前特效图像帧的合成。这里,OpenGL的混合技术指的是OpenGL的混色功能,使用该功能可以把原图的色彩和不透明度与目标图的色彩和不透明度按照某种方式混合。
因此,在根据本申请实施例的视频播放方法中,播放所述当前主图像帧和所述当前特效图像帧包括:以所述当前主图像帧作为背景、以所述当前特效图像帧作为前景合成为当前播放图像帧;以及,显示所述当前播放图像帧。
并且,在上述视频播放方法中,以所述当前主图像帧作为背景、以所述当前特效图像帧作为前景合成为当前播放图像帧包括:基于所述播放配置数据,将所述当前特效图像帧作为前景合成在作为背景的所述当前主图像帧的预定区域。
而如果所述第二视频不需要与所述第一视频同步播放,则可以按照所述第二视频的起播时间,将进行了透明化处理的所述第二视频和所述第一视频进行帧缓冲,并将进行了透明化处理的所述第二视频作为前景叠加在作为背景的所述第一视频的渲染区域上进行播放。
也就是,在根据本申请实施例的视频播放方法中,进一步包括:响应于所述第二视频不需要与所述第一视频同步播放,将所述进行了透明化处理的第二视频和所述第一视频基于所述起播时间进行帧缓冲;以及,将所述进行了透明化处理的第二视频作为前景叠加在作为背景的所述第一视频的渲染区域上进行播放。
下面,将对于根据本申请实施例的视频播放方法中的透明化处理进行详细说明。
首先,基于所述播放配置数据,可以确定所述第二视频的数据是否已进行了透明化处理。如果所述第二视频的数据还未进行透明化处理,则对所述第二视频的数据进行透明化处理。然后,在播放第一视频时播放进行了所述透明化处理的所述第二视频。
也就是,在根据本申请实施例的视频播放方法中,在播放第一视频时播放经透明化处理的第二视频包括:基于所述播放配置数据,确定所述第二视频的数据是否已进行透明化处理;响应于所述第二视频的数据未进行透明化处理,对所述第二视频的数据进行透明化处理;以及,在播放第一视频时播放进行了所述透明化处理的所述第二视频。
下面,将参考图3说明在根据本申请实施例的视频播放方法中的透明化处理过程的示例。
图3图示了根据本申请实施例的视频播放方法中的透明化处理过程的示例的流程图。
如图3所示,对所述第二视频的数据进行透明化处理的过程包括如下步骤。
S310,获取所述第二视频的不包含透明度信息的每一帧图像。也就是,如果所述第二视频不包含透明度信息,则获得其每一帧图像,例如特效视频的每一帧图像或者动态图像的每一帧图像。
S320,将所述每一帧图像作为合成图像的第一部分,并将所述每一帧图像复制作为所述合成图像的第二部分。也就是,为了添加透明度信息,需要对所述图像帧的每个像素添加相应的透明度值,并且所添加的透明度值需要与像素一一对应。
图4图示了根据本申请实施例的添加有透明度信息的单个图像帧的示意图。如图4所示,对于YUV格式的图像帧,图像帧的左半部分是没有透明度信息的图像,即第二视频播放器输出的第二视频的YUV格式的图像帧,图像帧的右半部分用于表示左半部分对应像素的透明度。这里,YUV指的是一种颜色编码方法,“Y”表示明亮度(Luminance或Luma),也就是灰阶值,“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。
S330,修改所述第二部分的每个像素的预定分量以表示所述第一部分的对应像素的透明度。
例如,继续参考图4,图像帧的右半部分以YUV的Y分量表示左半部分对应像素的透明度,取值范围是[0,255],即,不透明的程度随着Y分量的值线性递增,0是完全透明,255是完全不透明。
当然,本领域技术人员可以理解,虽然在图4的图像帧中将图像帧的左半部分示为未添加透明度信息的图像帧,右半部分示为添加的透明度信息,也可以按照其它方式排列图像帧及其透明度信息。例如,图像帧的上半部分为未添加透明度信息的图像帧,而下半部分为上半部分对应像素的透明度,等等。
此外,也可以采用第二部分的像素的其它分量来表示第一部分的对应像素的透明度,例如,YUV中的U分量或者V分量,或者是其它格式的图像像素的其它分量。
这样,通过以下过程,可以获得添加了透明度信息的预定格式,例如YUV的第二视频的图像帧,从而实现了第二视频的数据的透明化处理。
另外,对于某些终端设备来说,可能无法显示如上所述的YUV格式的第二视频的数据,而是需要转换为RGB格式的数据进行显示。那么,就需要针对所述添加了透明度信息的YUV格式的数据进行转换。
具体地,继续参考图3,在步骤S330,修改所述第二部分的每个像素的预定分量以表示所述第一部分的对应像素的透明度之后进一步包括如下步骤。
S340,将所述合成图像的第一部分转换为另一格式的数据。例如,将如图4所示的左半部分的YUV格式的数据转换为RGB格式的数据。
S350,将所述另一格式的数据乘以所述预定分量以获得经过透明化处理的每一帧图像的透明化图像数据。例如,将转换的RGB数据乘以如图4所示的右半部分的每个像素的Y分量以获得经过透明化处理的RGB数据。
S360,将所述预定分量作为所述透明化图像数据的透明度分量。例如,对于RGB数据来说,可以向其添加α通道以获得RGBA数据,其中α通道表示RGB数据的透明度。对于例如如图3所示的图像帧,可以直接将Y分量作为α通道的A分量。这里,RGBA指的是代表Red(红色)、Green(绿色)、Blue(蓝色)和Alpha(不透明度)的色彩空间。
S370,输出包含所述透明度分量的所述透明化图像数据作为进行了所述透明化处理的所述第二视频。例如,最后输出RGBA数据,也就是,如图4所示的图像帧的左半部分的图像帧。
综上所述,在根据本申请实施例的透明化处理过程中,按照所要处理的第二视频的图像帧的格式,如果可以直接添加表示透明度的新通道,则直接处理为包含新通道的图像帧,例如RGBA格式。否则,如果不能够直接添加表示透明度的新通道,则对原图像帧进行复制,并将复制后的图像帧中的某分量修改为表示透明度,例如YUV格式中的Y分量。
在实际的透明化处理过程当中,由于目前的终端设备大部分都具有GPU并支持OpenGL ES 2.0,可以使用OpenGL、OpenGL离屏渲染技术、OpenGL顶点着色器和OpenGL片段着色器在终端设备的GPU直接完成第二视频的图像帧的透明化。另外,也可以使用程序在CPU运行完成。
这里,OpenGL(Open Graphics Library:开放图形库或者开放式图形库)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口。OpenGL ES(OpenGL forEmbedded Systems;用于嵌入式系统的OpenGL)是OpenGL三维图形API的子集,针对智能手机、PDA和游戏主机等嵌入式设备而设计。OpenGL片段着色器是一组在GPU中执行的小程序,用于使用OpenGL渲染图形时,给图形中像素分配颜色。
当然,本领域技术人员可以理解,如果从服务器端下载的第二视频本身已经进行了透明化处理,例如下载的第二视频为自带透明通道的RGBA格式的动态图像,则不需要进行如上所述的透明化处理,而是直接播放或者进行同步后播放。
因此,在根据本申请实施例的视频播放方法中,对所述第二视频进行透明化处理包括:获取所述第二视频的不包含透明度信息的每一帧图像;将所述每一帧图像作为合成图像的第一部分,并将所述每一帧图像复制作为所述合成图像的第二部分;以及,修改所述第二部分的每个像素的预定分量以表示所述第一部分的对应像素的透明度。
并且,在上述视频播放方法中,在修改所述第二部分的每个像素的预定分量以表示所述第一部分的对应像素的透明度之后进一步包括:将所述合成图像的第一部分转换为另一格式的数据;将所述另一格式的数据乘以所述预定分量以获得经过透明化处理的每一帧图像的透明化图像数据;将所述预定分量作为所述透明化图像数据的透明度分量;以及,输出包含所述透明度分量的所述透明化图像数据作为进行了所述透明化处理的所述第二视频。
另外,如上所述,在根据本申请实施例的视频播放方法中,所述第二视频可以是动态图像,比如特效动图。那么,所述特效动图的播放配置数据可以包括所述特效动图的每一帧的呈现时间戳。这样,可以按照所述特效动图的每一帧的呈现时间戳,在播放第一视频时按照所述呈现时间戳播放所述特效动图的经透明化处理的每一帧图像。
也就是,在根据本申请实施例的视频播放方法中,获取第二视频的播放配置数据包括:获取特效动图的播放配置数据,所述播放配置数据包括所述特效动图的呈现时间戳。
此外,也可以根据第一视频的图像帧的呈现时间戳、特效动态图像的帧序号和特效起播时间来计算出特效动态图像的每一帧的呈现时间戳。或者,也可以指定第二视频的某一图像帧的显示时长,例如,在第二视频的某一图像帧的显示时间长于第一视频的图像帧的间隔时间的情况下,可能不需要多个第二视频的图像帧。
因此,在根据本申请实施例的视频播放方法中,获取所述特效动图的呈现时间戳包括:基于所述第一视频的每秒帧数、所述特效动图的帧序号和所述特效动图的起播时间确定所述特效动图的呈现时间戳。
综上所述,根据本申请实施例的视频播放方法能够同时分别获取彼此独立的第一视频和第二视频,并通过基于播放配置数据在播放第一视频时播放经透明化处理的第二视频来实现在第一视频上叠加第二视频,能够针对同一第一视频叠加不同的第二视频,从而实现了叠加的第二视频的灵活性,增强了第一视频和第二视频的展现效果。
并且,因为可以针对同一第一视频叠加不同的第二视频,也就是,每次播放第一视频时,可以获取不同的第二视频并基于其播放配置数据进行播放,从而对于观看同一第一视频的不同用户,可以按照用户的具体情况选择用户感兴趣的第二视频向用户播放,实现了视频播放的可定制化。
下面,将对于第二视频的制作进行进一步说明。
第二视频的制作
图5图示了根据本申请实施例的视频处理方法中的第二视频的制作示例的示意图。
如图5所示,在所述第二视频为视频形式的植入广告的情况下,首先获得如上所述的第一视频,然后通过植入点位检测来确定所述第一视频中用于植入广告的点位。
具体地,可以根据物体识别、品牌识别、场景识别、动作识别、背景音乐识别、字符视频、情绪识别和人物识别等识别手段,在所述第一视频中找到合适的场景,并进行点位检测。这里,点位检测指的是在视频中标记植入的广告的开始和结束时间,以及广告的位置坐标。
接下来,进行植入区域的筛选和跟踪,从而生成植入区域的指示数据。
基于植入区域的指示区域,可以提取植入区域,以作为分割模板。所述分割模板用于指示所述第一视频中用于植入广告和相应的特效的时间和位置。另外,可以基于特效生成特效蒙版,例如,通过分割和粒子效果等手段生成,用于表示例如飞花效果、膨胀效果、移花接木效果等的多种特效效果。
另一方面,将广告素材和特效蒙版进行特效合成以生成特效素材,然后进行特效渲染,比如亮度迁移、颜色迁移、模糊迁移和光照估计,以生成植入效果,也就是包含特效的广告视频。
最后,将在包含特效的广告视频进行边缘美化后,基于植入区域的指示数据生成第二视频,所述第二视频可以包括植入的广告视频及包含其播放配置数据的配置文件。
也就是,第二视频的制作要求第二视频的视频或者动态图像以第一视频为参考进行制作,在第二视频展现的相对时间段内,第二视频的每一图像帧和第一视频的每一图像帧一一对应,且每一帧的特效图像和第一视频中对应帧中的参考物相匹配。
示例性系统架构
图6图示了根据本申请实施例的视频处理方法所应用的系统的架构示例的示意图。
如图6所示,特效播放配置下载器用于从服务器端下载第二视频的播放配置数据,且将下载的第二视频的播放配置数据传送到第二视频下载器。
第二视频下载器从服务器端下载第二视频,并将其与播放配置数据一起传送到第二视频播放器。并且,与第一视频类似,第二视频播放器可以控制第二视频下载器的下载状态。
第一视频下载器从服务器端下载第一视频,并传送到第一视频播放器。如上所述,第二视频播放器可以控制第一视频下载器的下载状态。
第二视频播放器输出第二视频的图像帧,如果图像帧未经过透明化处理,则通过帧图像透明化处理器进行透明化处理,然后,与第一视频播放器输出的第一视频的图像帧一起输入双路视频帧同步器。
双路视频帧同步器按照如上所述的方式,对接收到的第一视频和第二视频的图像帧进行同步,并将同步后的双路视频输出到双路视频合成器。双路视频合成器将接收到的同步的双路视频的图像帧合成为一个图像帧,然后发送到帧缓冲器,以进一步在屏幕上显示。
示例性装置
图7图示了根据本申请实施例的视频播放装置的框图。
如图7所示,根据本申请实施例的视频播放装置400包括:视频获取单元410,用于获取第一视频;数据获取单元420,用于获取第二视频的播放配置数据;以及,视频播放单元430,用于基于所述播放配置数据,在播放所述第一视频时获取和播放经透明化处理的第二视频。
在一个示例中,在上述视频播放装置400中,所述播放配置数据至少包括所述第二视频的下载地址、起播时间、播放时长和渲染区域;所述视频播放单元430具体用于:在播放所述第一视频时,从所述第二视频的下载地址获取所述第二视频,对所述第二视频进行透明化处理,并在所述起播时间,在所述第一视频上的所述渲染区域上将进行了透明化处理的第二视频播放所述播放时长。
在一个示例中,在上述视频播放装置400中,所述播放配置数据至少进一步包括加载时间和预加载时间;所述视频播放单元430在播放所述第一视频时,从所述第二视频的下载地址获取所述第二视频,对所述第二视频进行透明化处理,并从所述起播时间开始,在所述第一视频上的所述渲染区域上将进行了透明化处理的第二视频播放所述播放时长具体包括:在播放所述第一视频时,在所述第二视频的下载时间提前所述预加载时间,从所述第二视频的下载地址获取所述第二视频;和,在播放所述第一视频时,在所述起播时间提前所述加载时间,在所述第一视频上的所述渲染区域播放经透明化处理的第二视频。
在一个示例中,在上述视频播放装置400中,所述视频播放单元430用于:基于所述播放配置数据,确定所述第二视频是否需要与所述第一视频同步播放;响应于所述第二视频需要与所述第一视频同步播放,对所述第二视频和所述第一视频各自的图像帧进行同步;以及,在所述起播时间播放同步后的所述第一视频和所述第二视频。
在一个示例中,在上述视频播放装置400中,所述视频播放单元430对所述第二视频和所述第一视频各自的图像帧进行同步包括:使用用于加载和缓存所述第二视频的图像帧的缓冲队列通过呈现时间戳进行所述第二视频和所述第一视频各自的图像帧的同步。
在一个示例中,在上述视频播放装置400中,所述视频播放单元430使用用于加载和缓存所述第二视频的图像帧的缓冲队列通过呈现时间戳进行所述第二视频和所述第一视频各自的图像帧的同步包括:获取所述第一视频的当前主图像帧的第一呈现时间戳;基于所述第一呈现时间戳获得相对应的所述第二视频的同步图像帧的第二呈现时间戳;基于所述第二呈现时间戳在所述缓冲队列中查找所述第二视频的当前特效图像帧;以及,播放所述当前主图像帧和所述当前特效图像帧。
在一个示例中,在上述视频播放装置400中,所述视频播放单元430进一步用于:响应于所述第二呈现时间戳小于所述缓冲队列中的所有特效图像帧的呈现时间戳,播放第一视频的当前主图像帧;以及,响应于所述第二呈现时间戳大于所述缓冲队列中的所有特效图像帧的呈现时间戳,清空所述缓冲队列,并基于所述第二呈现时间戳读取所述第二视频的数据。
在一个示例中,在上述视频播放装置400中,所述视频播放单元430播放所述当前主图像帧和所述当前特效图像帧包括:以所述当前主图像帧作为背景、以所述当前特效图像帧作为前景合成为当前播放图像帧;以及,显示所述当前播放图像帧。
在一个示例中,在上述视频播放装置400中,所述视频播放单元430以所述当前主图像帧作为背景、以所述当前特效图像帧作为前景合成为当前播放图像帧包括:基于所述播放配置数据,将所述当前特效图像帧作为前景合成在作为背景的所述当前主图像帧的预定区域。
在一个示例中,在上述视频播放装置400中,所述视频播放单元430进一步用于:响应于所述第二视频不需要与所述第一视频同步播放,将所述进行了透明化处理的第二视频和所述第一视频基于所述起播时间进行帧缓冲;以及,将所述进行了透明化处理的第二视频作为前景叠加在作为背景的所述第一视频的渲染区域上进行播放。
在一个示例中,在上述视频播放装置400中,所述视频播放单元430对所述第二视频进行透明化处理包括:获取所述第二视频的不包含透明度信息的每一帧图像;将所述每一帧图像作为合成图像的第一部分,并将所述每一帧图像复制作为所述合成图像的第二部分;以及,修改所述第二部分的每个像素的预定分量以表示所述第一部分的对应像素的透明度。
在一个示例中,在上述视频播放装置400中,所述视频播放单元430在修改所述第二部分的每个像素的预定分量以表示所述第一部分的对应像素的透明度之后进一步包括:将所述合成图像的第一部分转换为另一格式的数据;将所述另一格式的数据乘以所述预定分量以获得经过透明化处理的每一帧图像的透明化图像数据;将所述预定分量作为所述透明化图像数据的透明度分量;以及,输出包含所述透明度分量的所述透明化图像数据作为进行了所述透明化处理的所述第二视频。
在一个示例中,在上述视频播放装置400中,所述数据获取单元420用于:获取特效动图的播放配置数据,所述播放配置数据包括所述特效动图的呈现时间戳。
在一个示例中,在上述视频播放装置400中,所述数据获取单元420获取所述特效动图的呈现时间戳包括:基于所述第一视频的每秒帧数、所述特效动图的帧序号和所述特效动图的起播时间确定所述特效动图的呈现时间戳。
这里,本领域技术人员可以理解,上述视频播放装置400中的各个单元和模块的具体功能和操作已经在上面参考图1到图4的视频播放方法的描述中得到了详细介绍,并因此,将省略其重复描述。
如上所述,根据本申请实施例的视频播放装置400可以实现在各种终端设备中,例如用于播放视频的终端设备,例如用户的智能手机等。在一个示例中,根据本申请实施例的视频播放装置400可以作为一个软件模块和/或硬件模块而集成到终端设备中。例如,该视频播放装置400可以是该终端设备的操作系统中的一个软件模块,或者可以是针对于该终端设备所开发的一个应用程序;当然,该视频播放装置400同样可以是该终端设备的众多硬件模块之一。
替换地,在另一示例中,该视频播放装置400与该终端设备也可以是分立的设备,并且该视频播放装置400可以通过有线和/或无线网络连接到该终端设备,并且按照约定的数据格式来传输交互信息。
示例性电子设备
下面,参考图8来描述根据本申请实施例的电子设备。
图8图示了根据本申请实施例的电子设备的框图。
如图8所示,电子设备10包括一个或多个处理器11和存储器12。
处理器11可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备10中的其他组件以执行期望的功能。
存储器12可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器11可以运行所述程序指令,以实现上文所述的本申请的各个实施例的视频播放方法以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如第二视频的播放配置数据等。
在一个示例中,电子设备10还可以包括:输入装置13和输出装置14,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
该输入装置13可以包括例如键盘、鼠标等等。
该输出装置14可以向外部输出各种信息,包括叠加有第二视频的第一视频等。该输出装置14可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图8中仅示出了该电子设备10中与本申请有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备10还可以包括任何其他适当的组件。
示例性计算机程序产品和计算机可读存储介质
除了上述方法和设备以外,本申请的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的视频播放方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在第一用户计算设备上执行、部分地在第一用户设备上执行、作为一个独立的软件包执行、部分在第一用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本申请的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的视频播放方法中的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本申请的基本原理,但是,需要指出的是,在本申请中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本申请的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本申请为必须采用上述具体的细节来实现。
本申请中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
还需要指出的是,在本申请的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本申请的等效方案。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本申请。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本申请的范围。因此,本申请不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本申请的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。