视频处理方法及装置与流程

文档序号:16201313发布日期:2018-12-08 06:38阅读:152来源:国知局
视频处理方法及装置与流程

本发明涉及计算机技术领域,特别涉及一种视频处理方法及装置。

背景技术

视频具有承载动态影像的功能,目前已成为人们娱乐和交流的重要组成形式。视频的处理通常由拍摄端和播放端来执行,其中,拍摄端用于在拍摄过程中采集视频帧,从而生成视频数据,播放端用于播放视频数据。

实际应用中,对于拍摄端来说,用户可以根据所处的场景选择横屏、竖屏或横竖屏混合的方式进行拍摄,这样拍摄端也就会得到存在横屏、竖屏或横竖屏混合的视频数据。对于播放端来说,用户有时会采用横屏模式观看视频,有时会采用竖屏模式观看视频,还有时会先采用横屏模式,再切换到竖屏模式观看视频。在用户观看视频的过程中,如果视频画面的拍摄方向和播放端的屏幕方向不同,则用户看到的视频画面将会出现90度旋转的现象。为了观看到正向的视频画面,用户需要根据视频画面的拍摄方向,对播放端进行旋转。比如,如图1所示,如果视频画面为横屏方向,播放端为竖屏方向,则用户需要将播放端向左旋转90度,才能看到正向的视频画面。

但是这种在观看视频的过程中,通过人为旋转播放端来调整视频画面的方式,对于用户来说操作较为繁琐,影响用户的观看体验。



技术实现要素:

本发明实施例提供了一种视频处理方法及装置,可以用于解决相关技术中存在的用户观看视频过程中,需要人为旋转播放端,操作较为繁琐的问题。所述技术方案如下:

第一方面,提供了一种视频处理方法,应用于拍摄端,所述方法包括:

在拍摄过程中,采集视频帧,并检测所述拍摄端的拍摄方向,所述拍摄方向包括横屏方向或竖屏方向;

对于采集的第一个视频帧,根据所述第一个视频帧的拍摄方向生成第一方向帧,将所述第一方向帧插在所述第一个视频帧之前,所述第一方向帧携带所述第一个视频帧的拍摄方向信息;

对于采集的所述第一个视频帧之后的每个视频帧,若所述视频帧的拍摄方向和所述视频帧的上一个视频帧的拍摄方向不同,则生成第二方向帧,将所述第二方向帧插在所述视频帧之前,所述第二方向帧携带所述视频帧的拍摄方向信息;

生成插入方向帧的视频数据,所述方向帧包括所述第一方向帧,或包括所述第一方向帧和所述第二方向帧。

可选地,所述检测所述拍摄端的拍摄方向,包括:

调用所述拍摄端的屏幕方向监控接口,通过所述屏幕方向监控接口,获取所述拍摄端的屏幕方向;

将获取的屏幕方向,确定为所述拍摄端的拍摄方向。

可选地,所述根据所述第一个视频帧的拍摄方向生成第一方向帧,包括:

根据所述第一个视频帧的拍摄方向,利用nal(networkabstractlayer,网络抽象层)的扩展类型,生成携带所述第一个视频帧的拍摄方向信息的视频伪帧,将所述视频伪帧作为所述第一方向帧;

或者,

根据所述第一个视频帧的拍摄方向,利用sei(supplementalenhancementinformation,补充增强信息)提供的扩展方式,生成携带所述第一个视频帧的拍摄方向信息的增强帧,将所述增强帧作为所述第一方向帧。

可选地,所述将所述第一方向帧插在所述第一个视频帧之前,还包括:

将所述第一方向帧和第一个视频编码帧依次放置于待发送视频帧队列中,所述第一个视频编码帧是对所述第一个视频帧进行编码得到;

所述生成插入方向帧的视频数据,包括:

从所述待发送视频帧队列中依次取出视频队列帧,所述视频队列帧包括视频编码帧和方向帧;

对取出的视频队列帧进行封装处理,得到视频流。

可选地,所述对取出的视频队列帧进行封装处理,得到视频流之前,还包括:

在拍摄过程中,采集音频帧;

对于采集的每个音频帧,对所述音频帧进行编码,得到音频编码帧,将所述音频编码帧放置于待发送音频帧队列中;

从所述音频帧队列中依次取出音频队列帧;

所述对取出的视频队列帧进行封装处理,得到视频流,包括:

对取出的视频队列帧和音频队列帧进行封装处理,得到视频流。

可选地,所述方法还包括:

若所述视频帧的拍摄方向和所述视频帧的上一个视频帧的拍摄方向相同,则将所述视频帧插在所述上一个视频帧之后。

第二方面,提供了一种视频处理方法,应用于播放端,所述方法包括:

获取视频数据,所述视频数据包括多个视频帧和至少一个方向帧,每个方向帧携带所述方向帧的下一个视频帧的拍摄方向信息;

在播放所述视频数据的过程中,检测所述播放端的屏幕方向,所述播放端的屏幕方向包括横屏方向或竖屏方向;

若从所述视频数据中获取到任一方向帧,且所述方向帧携带的拍摄方向信息指示的拍摄方向和所述播放端的屏幕方向不同,则对于至少一个目标视频帧中的每个目标视频帧,根据所述播放端的屏幕方向,缩小所述目标视频帧的尺寸,播放缩小后的所述目标视频帧,所述至少一个目标视频帧为所述方向帧和所述方向帧的下一个视频帧之间的视频帧。

可选地,所述根据所述播放端的屏幕方向,缩小所述目标视频帧的尺寸,包括:

确定所述目标视频帧的缩小比例,所述缩小比例为第一边长与第二边长的比例,所述第一边长为所述播放端的视频可显示区域的高度和宽度中的最小值,所述第二边长为所述目标视频帧的高度和宽度中的最大值;

按照所述缩小比例,对所述目标视频帧进行缩小处理。

可选地,所述确定所述目标视频帧的缩小比例,包括:

当所述方向帧携带的拍摄方向信息指示的拍摄方向为横屏方向,所述播放端的屏幕方向为竖屏方向时,将所述播放端的视频可显示区域的宽度和所述目标视频帧的宽度之间的比例,确定为所述缩小比例;

当所述方向帧携带的拍摄方向信息指示的拍摄方向为竖屏方向,所述播放端的屏幕方向为横屏方向时,将所述播放端的视频可显示区域的高度和所述目标视频帧的高度之间的比例,确定为所述缩小比例。

可选地,所述播放缩小后的所述目标视频帧,包括:

按照所述播放端的视频可显示区域的尺寸,对所述缩小后的所述目标视频帧进行背景填充,得到填充后的所述目标视频帧,所述填充后的所述目标视频帧的尺寸与所述播放端的视频可显示区域的尺寸相同;

在所述播放端的视频可显示区域中,显示所述填充后的所述目标视频帧。

可选地,所述方法还包括:

若从所述视频数据中获取到任一方向帧,且所述方向帧携带的拍摄方向信息指示的拍摄方向和所述播放端的屏幕方向相同,则播放所述至少一个目标视频帧中的每个目标视频帧。

第三方面,提供了一种视频处理装置,其应用于拍摄端,所述装置包括:

第一采集模块,用于在拍摄过程中,采集视频帧;

检测模块,用于在拍摄过程中,检测所述拍摄端的拍摄方向,所述拍摄方向包括横屏方向或竖屏方向;

第一生成模块,用于对于采集的第一个视频帧,根据所述第一个视频帧的拍摄方向生成第一方向帧,将所述第一方向帧插在所述第一个视频帧之前,所述第一方向帧携带所述第一个视频帧的拍摄方向信息;

第二生成模块,用于对于采集的所述第一个视频帧之后的每个视频帧,若所述视频帧的拍摄方向和所述视频帧的上一个视频帧的拍摄方向不同,则生成第二方向帧,将所述第二方向帧插在所述视频帧之前,所述第二方向帧携带所述视频帧的拍摄方向信息;

第三生成模块,用于生成插入方向帧的视频数据,所述方向帧包括所述第一方向帧,或包括所述第一方向帧和所述第二方向帧。

可选地,所述检测模块用于:

调用所述拍摄端的屏幕方向监控接口,通过所述屏幕方向监控接口,获取所述拍摄端的屏幕方向;

将获取的屏幕方向,确定为所述拍摄端的拍摄方向。

可选地,所述第一生成模块用于:

根据所述第一个视频帧的拍摄方向,利用nal的扩展类型,生成携带所述第一个视频帧的拍摄方向信息的视频伪帧,将所述视频伪帧作为所述第一方向帧;

或者,

根据所述第一个视频帧的拍摄方向,利用sei提供的扩展方式,生成携带所述第一个视频帧的拍摄方向信息的增强帧,将所述增强帧作为所述第一方向帧。

可选地,所述装置还包括:

第一入队模块,用于将所述第一方向帧和第一个视频编码帧依次放置于待发送视频帧队列中,所述第一个视频编码帧是对所述第一个视频帧进行编码得到;

所述第三生成模块,用于从所述待发送视频帧队列中依次取出视频队列帧,所述视频队列帧包括视频编码帧和方向帧;对取出的视频队列帧进行封装处理,得到视频流。

可选地,所述装置还包括:

第二采集模块,用于在拍摄过程中,采集音频帧;

第二入队模块,用于对于采集的每个音频帧,对所述音频帧进行编码,得到音频编码帧,将所述音频编码帧放置于待发送音频帧队列中;

第二出队模块,用于从所述音频帧队列中依次取出音频队列帧;

所述第三生成模块,用于对取出的视频队列帧和音频队列帧进行封装处理,得到视频流。

可选地,所述装置还包括:

处理模块,用于若所述视频帧的拍摄方向和所述视频帧的上一个视频帧的拍摄方向相同,则将所述视频帧插在所述上一个视频帧之后。

第四方面,提供了一种视频处理装置,应用于播放端,所述装置包括:

获取模块,用于获取视频数据,所述视频数据包括多个视频帧和至少一个方向帧,每个方向帧携带所述方向帧的下一个视频帧的拍摄方向信息;

检测模块,用于在播放所述视频数据的过程中,检测所述播放端的屏幕方向,所述播放端的屏幕方向包括横屏方向或竖屏方向;

处理模块,用于若从所述视频数据中获取到任一方向帧,且所述方向帧携带的拍摄方向信息指示的拍摄方向和所述播放端的屏幕方向不同,则对于至少一个目标视频帧中的每个目标视频帧,根据所述播放端的屏幕方向,缩小所述目标视频帧的尺寸,播放缩小后的所述目标视频帧,所述至少一个目标视频帧为所述方向帧和所述方向帧的下一个视频帧之间的视频帧。

可选地,所述处理模块包括:

确定单元,用于确定所述目标视频帧的缩小比例,所述缩小比例为第一边长与第二边长的比例,所述第一边长为所述播放端的视频可显示区域的高度和宽度中的最小值,所述第二边长为所述目标视频帧的高度和宽度中的最大值;

缩小模块,用于按照所述缩小比例,对所述目标视频帧进行缩小处理。

可选地,所述确定单元用于:

当所述方向帧携带的拍摄方向信息指示的拍摄方向为横屏方向,所述播放端的屏幕方向为竖屏方向时,将所述播放端的视频可显示区域的宽度和所述目标视频帧的宽度之间的比例,确定为所述缩小比例;

当所述方向帧携带的拍摄方向信息指示的拍摄方向为竖屏方向,所述播放端的屏幕方向为横屏方向时,将所述播放端的视频可显示区域的高度和所述目标视频帧的高度之间的比例,确定为所述缩小比例。

可选地,所述处理模块包括:

填充单元,用于按照所述播放端的视频可显示区域的尺寸,对所述缩小后的所述目标视频帧进行背景填充,得到填充后的所述目标视频帧,所述填充后的所述目标视频帧的尺寸与所述播放端的视频可显示区域的尺寸相同;

显示单元,用于在所述播放端的视频可显示区域中,显示所述填充后的所述目标视频帧。

可选地,所述装置还包括:

播放模块,用于若从所述视频数据中获取到任一方向帧,且所述方向帧携带的拍摄方向信息指示的拍摄方向和所述播放端的屏幕方向相同,则播放所述至少一个目标视频帧中的每个目标视频帧。

第五方面,提供了一种视频处理装置,所述装置包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为执行上述任一种视频处理方法的步骤。

第六方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,所述指令被处理器执行时实现上述任一种视频处理方法的步骤。

本发明实施例提供的有益效果是:

本发明实施例中,通过在拍摄端采集视频帧的过程中,在采集的第一个视频帧之前插入第一方向帧,以指示第一个视频帧的拍摄方向,并在之后采集每个视频帧时,当采集的视频帧的拍摄方向和上一个视频帧的拍摄方向不同时,在采集的视频帧之前插入第二方向帧,以指示当前采集的视频帧的拍摄方向,然后生成插入方向帧的视频数据,可以使得播放端在播放包括方向帧的视频数据的过程中,当获取到任一方向帧,且该方向帧指示的拍摄方向和播放端的屏幕方向不同时,根据播放端的屏幕方向和视频可显示区域的尺寸,对该方向帧和下一个方向帧之间的视频帧进行缩小处理,并在视频可显示区域中显示缩小后的视频帧,从而避免了对视频帧画面方向的旋转,保证了用户能够看到正向的视频画面。如此,在视频帧的拍摄方向和播放端的屏幕方向不同时,实现了对视频帧播放画面的自动调整,避免了用户需要手动旋转播放端的操作,提高了视频播放效果。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是相关技术中提供的一种视频显示画面的示意图;

图2是本发明实施例提供的一种视频处理系统的示意图;

图3是本发明实施例提供的另一种视频处理系统的示意图;

图4是本发明实施例提供的一种视频处理方法的流程图;

图5是本发明实施例提供的另一种视频处理方法的流程图;

图6是本发明实施例提供的另一种视频处理方法的流程图;

图7是本发明实施例提供的一种视频处理的示意图;

图8是本发明实施例提供的另一种视频处理的示意图;

图9是本发明实施例提供的一种视频处理装置的结构框图;

图10是本发明实施例提供的一种视频处理装置的结构框图;

图11是本发明实施例提供的一种终端1100的结构框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

在对本发明实施例进行详细地解释说明之前,先对本发明实施例的应用场景予以说明。本发明实施例提供的视频处理方法可以应用于直播场景中、视频通话场景中、或视频录制和对录制的视频进行播放的场景中等。

接下来,对本发明实施例的实施环境进行介绍。

本发明实施例提供的视频处理方法可以应用于视频处理系统中,图2是本发明实施例提供的一种视频处理系统的示意图,如图2所示,该系统包括拍摄端10和播放端20。

其中,拍摄端10用于拍摄视频,播放端20用于播放视频。可选地,拍摄端10可以将拍摄的视频上传到网络,播放端20可以从网络上获取拍摄端上传的视频,并进行播放。实际应用中,播放端10和播放端20可以为手机、平板电脑或计算机等,本发明实施例对此不做限定。

具体地,拍摄端10在拍摄过程中,可以一边采集视频帧,一边检测拍摄端10的拍摄方向,拍摄方向包括横屏方向或竖屏方向。对于采集的第一个视频帧,根据第一个视频帧的拍摄方向生成第一方向帧,将所述第一方向帧插在所述第一个视频帧之前,第一方向帧携带所述第一个视频帧的拍摄方向信息;对于采集的第一个视频帧之后的每个视频帧,若该视频帧的拍摄方向和该视频帧的上一个视频帧的拍摄方向不同,则生成第二方向帧,将所述第二方向帧插在所述视频帧之前,第二方向帧携带所述视频帧的拍摄方向信息。然后,生成插入方向帧的视频数据。

而播放端20在播放包括方向帧的视频数据的过程中,可以一边从视频数据中获取帧,一边检测播放端的屏幕方向,屏幕方向包括横屏方向或竖屏方向。若从视频数据中获取到任一方向帧,且该方向帧携带的拍摄方向信息指示的拍摄方向和播放端的屏幕方向不同,则对于至少一个目标视频帧中的每个目标视频帧,可以根据播放端20的屏幕方向和视频可显示区域的尺寸,缩小目标视频帧的尺寸,然后播放缩小后的目标视频帧。其中,该至少一个目标视频帧为该方向帧和该方向帧的下一个视频帧之间的视频帧。

图3是本发明实施例提供的另一种视频处理系统的示意图,如图2所示,该系统包括拍摄端10、播放端20和服务器30。在直播场景中,拍摄端10为主播端,播放端20为观众端,服务器30为直播平台的直播服务器。

也即是,本发明实施例中,拍摄端可以在采集的第一个视频帧之前插入一个方向帧,指示之后的视频帧的拍摄方向,并在拍摄端的拍摄方向发生变化时,在采集到的视频帧之前再插入一个方向帧,以指示之后的视频帧的拍摄方向发生了变化。如此,播放端在播放视频数据的过程中,可以根据该视频数据中插入的方向帧,确定相邻视频帧的拍摄方向,以确定待播放的视频帧的拍摄方向与播放端的屏幕方向是否相同,并在两者不同时,根据播放端的屏幕方向对待播放的视频帧进行缩小处理,以便播放端无需对视频帧进行旋转,即可将该视频帧显示在播放端的视频可显示区域中,从而避免了视频帧的画面方向发生90度旋转的问题,进而也避免了需要用户手动旋转播放端的操作,提高了视频播放效果和用户的观看体验。

图4是本发明实施例提供的一种视频处理方法的流程图,该方法用于拍摄端。参见图4,该方法包括:

步骤401:在拍摄过程中,采集视频帧,并检测拍摄端的拍摄方向,该拍摄方向包括横屏方向或竖屏方向。

步骤402:对于采集的第一个视频帧,根据第一个视频帧的拍摄方向生成第一方向帧,将第一方向帧插在第一个视频帧之前,第一方向帧携带第一个视频帧的拍摄方向信息。

步骤403:对于采集的第一个视频帧之后的每个视频帧,若该视频帧的拍摄方向和该视频帧的上一个视频帧的拍摄方向不同,则生成第二方向帧,将第二方向帧插在该视频帧之前,第二方向帧携带该视频帧的拍摄方向信息。

步骤404:生成插入方向帧的视频数据,该方向帧包括第一方向帧,或包括第一方向帧和第二方向帧。

本发明实施例中,通过在拍摄端采集视频帧的过程中,在采集的第一个视频帧之前插入第一方向帧,以指示第一个视频帧的拍摄方向,并在之后采集每个视频帧时,当采集的视频帧的拍摄方向和上一个视频帧的拍摄方向不同时,在采集的视频帧之前插入第二方向帧,以指示当前采集的视频帧的拍摄方向,然后生成插入方向帧的视频数据,可以使得播放端在播放包括方向帧的视频数据的过程中,可以根据其中的方向帧,确定该方向帧之后的视频帧的拍摄方向,当任一方向帧指示的拍摄方向和播放端的屏幕方向不同时,根据播放端的屏幕方向和视频可显示区域的尺寸,对该方向帧和下一个方向帧之间的视频帧进行缩小处理,并在视频可显示区域中显示缩小后的视频帧,从而避免了对视频帧画面方向的旋转,保证了用户能够看到正向的视频画面。如此,在视频帧的拍摄方向和播放端的屏幕方向不同时,实现了对视频帧播放画面的自动调整,避免了用户需要手动旋转播放端的操作,提高了视频播放效果。

可选地,检测该拍摄端的拍摄方向,包括:

调用拍摄端的屏幕方向监控接口,通过该屏幕方向监控接口,获取拍摄端的屏幕方向;

将获取的屏幕方向,确定为拍摄端的拍摄方向。

可选地,根据该第一个视频帧的拍摄方向生成第一方向帧,包括:

根据第一个视频帧的拍摄方向,利用网络抽象层nal的扩展类型,生成携带第一个视频帧的拍摄方向信息的视频伪帧,将该视频伪帧作为第一方向帧;

或者,

根据第一个视频帧的拍摄方向,利用补充增强信息sei提供的扩展方式,生成携带第一个视频帧的拍摄方向信息的增强帧,将该增强帧作为第一方向帧。

可选地,将该第一方向帧插在第一个视频帧之前,还包括:

将第一方向帧和第一个视频编码帧依次放置于待发送视频帧队列中,该第一个视频编码帧是对第一个视频帧进行编码得到;

生成插入方向帧的视频数据,包括:

从待发送视频帧队列中依次取出视频队列帧,该视频队列帧包括视频编码帧和方向帧;

对取出的视频队列帧进行封装处理,得到视频流。

可选地,对取出的视频队列帧进行封装处理,得到视频流之前,还包括:

在拍摄过程中,采集音频帧;

对于采集的每个音频帧,对该音频帧进行编码,得到音频编码帧,将该音频编码帧放置于待发送音频帧队列中;

从该音频帧队列中依次取出音频队列帧;

对取出的视频队列帧进行封装处理,得到视频流,包括:

对取出的视频队列帧和音频队列帧进行封装处理,得到视频流。

可选地,该方法还包括:

若该视频帧的拍摄方向和该视频帧的上一个视频帧的拍摄方向相同,则将该视频帧插在该上一个视频帧之后。

上述所有可选技术方案,均可按照任意结合形成本发明的可选实施例,本发明实施例对此不再一一赘述。

图5是本发明实施例提供的另一种视频处理方法的流程图,该方法用于播放端。参见图5,该方法包括:

步骤501:获取视频数据,该视频数据包括多个视频帧和至少一个方向帧,每个方向帧携带该方向帧的下一个视频帧的拍摄方向信息。

步骤502:在播放该视频数据的过程中,检测该播放端的屏幕方向,该播放端的屏幕方向包括横屏方向或竖屏方向。

步骤503:若从该视频数据中获取到任一方向帧,且该方向帧携带的拍摄方向信息指示的拍摄方向和该播放端的屏幕方向不同,则对于至少一个目标视频帧中的每个目标视频帧,根据该播放端的屏幕方向,缩小该目标视频帧的尺寸,播放缩小后的该目标视频帧,该至少一个目标视频帧为该方向帧和该方向帧的下一个视频帧之间的视频帧。

本发明实施例中,通过播放端在播放包括方向帧的视频数据的过程中,当获取到任一方向帧,且该方向帧指示的拍摄方向和播放端的屏幕方向不同时,根据播放端的屏幕方向和视频可显示区域的尺寸,对该方向帧和下一个方向帧之间的视频帧进行缩小处理,并在视频可显示区域中显示缩小后的视频帧,从而避免了对视频帧画面方向的旋转,保证了用户能够看到正向的视频画面。如此,在视频帧的拍摄方向和播放端的屏幕方向不同时,实现了对视频帧播放画面的自动调整,避免了用户需要手动旋转播放端的操作,提高了视频播放效果。

可选地,该根据该播放端的屏幕方向,缩小该目标视频帧的尺寸,包括:

确定该目标视频帧的缩小比例,该缩小比例为第一边长与第二边长的比例,该第一边长为该播放端的视频可显示区域的高度和宽度中的最小值,该第二边长为该目标视频帧的高度和宽度中的最大值;

按照该缩小比例,对该目标视频帧进行缩小处理。

可选地,该确定该目标视频帧的缩小比例,包括:

当该方向帧携带的拍摄方向信息指示的拍摄方向为横屏方向,该播放端的屏幕方向为竖屏方向时,将该播放端的视频可显示区域的宽度和该目标视频帧的宽度之间的比例,确定为该缩小比例;

当该方向帧携带的拍摄方向信息指示的拍摄方向为竖屏方向,该播放端的屏幕方向为横屏方向时,将该播放端的视频可显示区域的高度和该目标视频帧的高度之间的比例,确定为该缩小比例。

可选地,该播放缩小后的该目标视频帧,包括:

按照该播放端的视频可显示区域的尺寸,对该缩小后的该目标视频帧进行背景填充,得到填充后的该目标视频帧,该填充后的该目标视频帧的尺寸与该播放端的视频可显示区域的尺寸相同;

在该播放端的视频可显示区域中,显示该填充后的该目标视频帧。

可选地,该方法还包括:

若从该视频数据中获取到任一方向帧,且该方向帧携带的拍摄方向信息指示的拍摄方向和该播放端的屏幕方向相同,则播放该至少一个目标视频帧中的每个目标视频帧。

上述所有可选技术方案,均可按照任意结合形成本发明的可选实施例,本发明实施例对此不再一一赘述。

图6是本发明实施例提供的另一种视频处理方法的流程图,该方法用于拍摄端和播放端。参见图6,该方法包括:

步骤601:拍摄端在拍摄过程中,采集视频帧,并检测拍摄端的拍摄方向,该拍摄方向包括横屏方向或竖屏方向。

本发明实施例中,拍摄端在拍摄视频时,可以一边采集拍摄的视频帧,一边检测拍摄端的拍摄方向。拍摄端的拍摄方向是指拍摄端的屏幕方向。

具体地,拍摄端可以调用拍摄端的屏幕方向监控接口,通过屏幕方向监控接口,获取拍摄端的屏幕方向,然后将获取的屏幕方向,确定为拍摄端的拍摄方向。示例的,该屏幕方向监控接口可以为屏幕方向事件监控函数。

具体地,拍摄端可以调用音视频采集接口,通过该音视频采集接口采集视频帧。示例的,该音视频采集接口可以为音视频采集回调函数。

在一个实施例中,拍摄端可以预先定义一个拍摄方向变量,该拍摄方向变量用于指示实时拍摄方向。在拍摄端开始拍摄之前,可以先对拍摄方向变量进行初始化,后续在检测到拍摄端的拍摄方向发生变化时,再对初始化的拍摄方向变量进行修改。比如,开始拍摄之前,先将拍摄方向变量初始化为竖屏方向,后续当检测到拍摄方向为横屏方向时,再将拍摄方向变量的值修改为横屏方向。示例的,将拍摄方向变量初始化为默认值true,当检测到摄方向为横屏方向时,将摄方向变量的值修改为false。其中,true用于指示竖屏方向,false用于指示横屏方向。

进一步地,还可以预先定义一个最后有效拍摄方向变量,该最后有效拍摄方向变量用于指示实时拍摄方向的上一次有效拍摄方向,也即是,当前时刻的上一次检测到的有效拍摄方向。拍摄端开始拍摄之前,可以先对最后有效拍摄方向变量进行初始化,后续再根据拍摄方向变量的值,对最后有效拍摄方向变量进行更改。比如,可以先将最后有效拍摄方向变量的值初始化为拍摄方向变量的初始化值,后续当拍摄方向变量发生变化时,再根据拍摄方向变量的值,对最后有效拍摄方向变量进行更改。

步骤602:对于采集的第一个视频帧,拍摄端根据第一个视频帧的拍摄方向生成第一方向帧,将第一方向帧插在第一个视频帧之前,第一方向帧携带第一个视频帧的拍摄方向信息。

当采集到第一个视频帧时,可以确定第一个视频帧的拍摄方向,并根据第一个视频帧的拍摄方向生成第一方向帧,然后将第一方向帧插在第一个视频帧之前。该第一方向帧用于指示拍摄端开始拍摄时的拍摄方向。

在一个实施例中,当采集到第一个视频帧时,可以根据拍摄第一个视频帧时屏幕方向变量的值,确定第一个视频帧的拍摄方向。

具体地,根据第一个视频帧的拍摄方向生成第一方向帧可以包括以下两种实现方式:

第一种实现方式:根据第一个视频帧的拍摄方向,利用网络抽象层nal的扩展类型,生成携带第一个视频帧的拍摄方向信息的视频伪帧,将该视频伪帧作为第一方向帧。

其中,该视频伪帧的帧类型为视频伪帧类型,且该视频伪帧中的数据为第一个视频帧的拍摄方向信息。示例的,该视频伪帧的数据值为拍摄第一个视频帧时屏幕方向变量的值。示例的,nal的扩展类型为h264的nal保留给应用程序的扩展类型。

第二种实现方式:根据第一个视频帧的拍摄方向,利用补充增强信息sei提供的扩展方式,生成携带第一个视频帧的拍摄方向信息的增强帧,将该增强帧作为第一方向帧。

其中,该增强帧的帧类型为增强帧类型,且该增强帧中的数据为第一个视频帧的拍摄方向信息。示例的,该视频伪帧的数据值为拍摄第一个视频帧时屏幕方向变量的值。示例的,sei提供的扩展方式为h264的增强帧类型sei保留给用户的扩展方式。

在直播或视频通话场景中,拍摄端拍摄的视频还需要实时发送给服务器,由服务器转发为播放端。比如,在直播场景中,拍摄端为主播端,播放端为用户端,主播端在直播拍摄过程中,需要将直播视频发送给直播服务器,由直播服务器转发给主播端。

在一个实施例中,以直播或视频通话场景为例,将第一方向帧插在所述第一个视频帧之前,拍摄端还可以一边将第一方向帧和第一个视频编码帧依次放置于待发送视频帧队列中,一边从待发送视频帧队列中依次取出视频队列帧,并对取出的视频队列帧进行封装处理,得到视频流,以将视频流发送给流媒体服务器,由流媒体服务器将视频流转发给播放端。其中,第一个视频编码帧是对第一个视频帧进行编码得到,视频队列帧包括视频编码帧和方向帧。

也即是,在待发送视频帧队列中,第一方向帧位于第一视频编码帧之前。播放端生成第一方向帧之后,可以先将第一视频帧放置于待发送视频帧队列中,再对第一个视频帧进行编码,得到第一个视频编码帧,并将第一个视频编码帧放置于待发送视频帧队列。

进一步地,在拍摄端拍摄的过程中,拍摄端不仅可以采集视频帧,还可以采集音频帧,然后根据采集的视频帧、生成的方向帧和采集的音频帧,生成视频数据。

在一个实施例中,以直播或视频通话场景为例,拍摄端对取出的视频队列帧进行封装处理,得到视频流之前,还可以在拍摄过程中,采集音频帧,对于采集的每个音频帧,对音频帧进行编码,得到音频编码帧,将音频编码帧放置于待发送音频帧队列中。另一边,可以从待发送视频帧中依次取出视频队列帧,并从待发送音频帧队列中依次取出音频队列帧,然后对取出的视频队列帧和音频队列帧进行封装处理,得到视频流。

也即是,拍摄端可以同时启动音视频采集线程和网络发送线程,通过音视频采集线程可以采集音频帧和视频帧,通过网络发送线程可以从待发送音视频队列中取出队列帧,并将取出的队列帧封装为视频流,发送给流媒体服务器,以通过流媒体服务器转发给播放端。

步骤603:对于采集的第一个视频帧之后的每个视频帧,若该视频帧的拍摄方向和该视频帧的上一个视频帧的拍摄方向不同,则拍摄端生成第二方向帧,将第二方向帧插在该视频帧之前,第二方向帧携带该视频帧的拍摄方向信息。

也即是,在后续采集视频帧的过程中,当拍摄端的拍摄方向发生变化时,将继续生成方向帧,并将生成的方向帧插在采集的视频帧之前,该方向帧用于指示拍摄端的拍摄方向发生了变化。

可选地,若拍摄端预先设置有拍摄方向变量和最后有效拍摄方向变量,则可以在采集到该视频帧时,获取拍摄方向变量的值和最后有效拍摄方向变量的值,当拍摄方向变量的值和最后有效拍摄方向变量的值不同时,确定视频帧的拍摄方向和该视频帧的上一个视频帧的拍摄方向不同,然后生成第二方向帧。

具体地,生成第二方向帧的方式与上述生成第一方向帧的方式相同,可以包括以下两种实现方式:

第一种实现方式:利用nal的扩展类型,生成携带该视频帧的拍摄方向信息的视频伪帧,将该视频伪帧作为第二方向帧。

第二种实现方式:利用sei提供的扩展方式,生成携带该个视频帧的拍摄方向信息的增强帧,将该增强帧作为该第二方向帧。

另外,若该视频帧的拍摄方向和该视频帧的上一个视频帧的拍摄方向相同,则无需生成方向帧,并按照一般的视频帧采集方式继续采集视频帧。也即是,若该视频帧的拍摄方向和该视频帧的上一个视频帧的拍摄方向相同,则将该视频帧插在该上一个视频帧之后,并继续采集该视频帧的下一个视频帧。

步骤604:拍摄端生成插入方向帧的视频数据,该方向帧包括第一方向帧,或包括第一方向帧和第二方向帧。

具体地,拍摄端生成插入方向帧的视频数据包括以下两种方式:

第一种实现方式:将插入方向帧的视频帧生成视频,生成的视频可以存储在拍摄端的预设存储空间中,也可以上传到网络中,或者发送给其他终端,本发明实施例对此不做限定。

需要说明的是,第一种实现方式可以应用于视频录制等场景。

第二种实现方式:将插入方向帧的视频帧转换为视频流,将视频流发送给流媒体服务器,以通过流媒体服务器转发给播放端。

需要说明的是,第二种实现方式可以应用于直播或视频通话等场景。

步骤605:播放端获取视频数据,该视频数据包括多个视频帧和至少一个方向帧,每个方向帧携带该方向帧的下一个视频帧的拍摄方向信息。

其中,该视频数据可以为播放端预先存储的视频数据或者从网络下载的视频数据,也可以为拍摄端发送的视频数据。

以直播或视频通话场景为例,播放端可以从流媒体服务器接收视频流,该视频流包括视频编码帧和方向帧。播放端接收到视频编码帧时,可以对视频编码帧进行解码,得到视频帧。示例的,播放端可以启动网络接收与解码线程,通过该网络接收与解码线程从流媒体服务器接收视频流,并对视频流中的视频编码帧进行解码,得到视频帧。

进一步地,该视频数据还可以包括音频帧。以直播或视频通话场景为例,播放端可以从流媒体服务器接收视频流,该视频流包括视频编码帧、方向帧和音频编码帧。播放端接收到视频编码帧时,可以对视频编码帧进行解码,得到视频帧,接收到音频编码帧时,可以对音频编码帧进行解码,得到音频帧。示例的,播放端可以启动网络接收与解码线程,通过该网络接收与解码线程从流媒体服务器接收视频流,并对视频流中的视频编码帧和音频编码帧进行解码,得到视频帧和音频帧。

步骤606:播放端在播放该视频数据的过程中,检测该播放端的屏幕方向,该播放端的屏幕方向包括横屏方向或竖屏方向。

也即是,播放端可以一边播放该视频数据,一边检测该播放端的屏幕方向。具体地,播放端可以调用屏幕方向监控接口,通过屏幕方向监控接口,获取播放端的屏幕方向。示例的,该屏幕方向监控接口可以为屏幕方向事件监控函数。

在一个实施例中,播放端可以预先定义一个屏幕方向变量,该屏幕方向变量用于指示实时屏幕方向。在播放端开始拍摄之前,可以先对屏幕方向变量进行初始化,后续在检测到播放端的屏幕方向发生变化时,再对初始化的屏幕方向变量进行修改。比如,开始拍摄之前,先将屏幕方向变量初始化为竖屏方向,后续当检测到屏幕方向为横屏方向时,再将屏幕方向变量的值修改为横屏方向。示例的,将屏幕方向变量初始化为默认值true,当检测到摄方向为横屏方向时,将摄方向变量的值修改为false。其中,true用于指示竖屏方向,false用于指示横屏方向。

进一步地,还可以预先定义一个最后有效屏幕方向变量,该最后有效屏幕方向变量用于指示实时屏幕方向的上一次有效屏幕方向,也即是,当前时刻的上一次检测到的有效屏幕方向。播放端开始拍摄之前,可以先对最后有效屏幕方向变量进行初始化,后续再根据屏幕方向变量的值,对最后有效屏幕方向变量进行更改。比如,可以先将最后有效屏幕方向变量的值初始化为屏幕方向变量的初始化值,后续当屏幕方向变量发生变化时,再根据屏幕方向变量的值,对最后有效屏幕方向变量进行更改。

步骤607:若从该视频数据中获取到任一方向帧,且该方向帧携带的拍摄方向信息指示的拍摄方向和该播放端的屏幕方向不同,则对于至少一个目标视频帧中的每个目标视频帧,播放端根据该播放端的屏幕方向和视频可显示区域的尺寸,缩小该目标视频帧的尺寸,播放缩小后的该目标视频帧,该至少一个目标视频帧为该方向帧和该方向帧的下一个视频帧之间的视频帧。

在播放视频数据的过程中,若从该视频数据中获取到任一方向帧,则可以获取该方向帧携带的拍摄方向信息以及拍摄端的屏幕方向,若该向帧携带的拍摄方向信息指示的拍摄方向和该播放端的屏幕方向不同,则对于该方向帧之后的任一目标视频帧,可以根据播放端的屏幕方向和视频可显示区域的尺寸,缩小该目标视频帧的尺寸,再在视频可显示区域中显示缩小后的目标视频帧。

在将目标视频帧缩小后显示在视频可显示区域时,由于目标视频帧的画面方向未发生旋转,因此用户即可看到正向的视频画面,区别仅在于视频画面产生了缩小。比如,假设该方向帧携带的拍摄方向信息指示的拍摄方向为横屏方向,也即是,该方向帧和下一个方向帧之间的至少一个目标视频帧的拍摄方向均为横屏方向,播放端的屏幕方向为竖屏方向,相关技术中,若在竖屏方向上显示该目标视频帧,则需要将目标视频帧旋转90度之后显示在显示屏幕上,也即是,将目标视频帧旋转为竖屏后充分填充在竖屏的显示屏幕上,但是这样的话,目标视频帧的画面方向也会发生旋转,比如,原来竖直站立的人像将旋转成横向站立,之后,如果用户要看到正向的视频画面,也就需要再将播放端进行旋转,影响用户的观看体验。而本发明实例中,则可以将横屏方向的目标视频帧缩小后直接显示在显示屏幕的视频可显示区域内,比如,显示在视频可显示区域的中心位置,如此,目标视频帧的画面方向也就不会发生旋转,用户也就不需要再手动旋转播放端,提高了用户的观看体验。

具体地,根据播放端的屏幕方向和视频可显示区域的尺寸,缩小目标视频帧的尺寸包括:确定目标视频帧的缩小比例,按照该缩小比例,对该目标视频帧进行缩小处理。其中。该缩小比例为第一边长与第二边长的比例,该第一边长为该播放端的视频可显示区域的高度和宽度中的最小值,该第二边长为该目标视频帧的高度和宽度中的最大值。

具体地,确定该目标视频帧的缩小比例包括以下两种情况:

第一种情况:当该方向帧携带的拍摄方向信息指示的拍摄方向为横屏方向,播放端的屏幕方向为竖屏方向时,将播放端的视频可显示区域的宽度和目标视频帧的宽度之间的比例,确定为该缩小比例。

例如,如图7所示,目标视频帧a的拍摄方向为横屏方向,播放端的屏幕方向为竖屏方向,且目标视频帧a的宽度为w,播放端的视频可显示区域的宽度为w,则缩小比例s=w/w。按照该缩小比例对目标视频帧进行缩小处理,可以得到缩小后的目标视频帧b,且缩小后的目标视频帧b可直接显示在播放端的视频可显示区域中。

第二种情况:当该方向帧携带的拍摄方向信息指示的拍摄方向为竖屏方向,该播放端的屏幕方向为横屏方向时,将该播放端的视频可显示区域的高度和该目标视频帧的高度之间的比例,确定为该缩小比例。

例如,如图8所示,目标视频帧a的拍摄方向为竖屏方向,播放端的屏幕方向为横屏方向,且目标视频帧a的高度为h,播放端的视频可显示区域的高度为h,则缩小比例s=h/h。按照该缩小比例对目标视频帧进行缩小处理,可以得到缩小后的目标视频帧b,且缩小后的目标视频帧b可直接显示在播放端的视频可显示区域中。

具体地,按照该缩小比例,对该目标视频帧进行缩小处理,是指按照该缩小比例,对该目标视频帧的高度和宽度分别进行等比例缩小。

进一步地,播放缩小后的目标视频帧还可以包括:按照播放端的视频可显示区域的尺寸,对缩小后的目标视频帧进行背景填充,得到填充后的目标视频帧,且填充后的目标视频帧的尺寸与播放端的视频可显示区域的尺寸相同,然后在播放端的视频可显示区域中,显示填充后的目标视频帧。

比如,如图7所示,当目标视频帧的拍摄方向为横屏方向,播放端的屏幕方向为竖屏方向时,可以在缩小后的目标视频帧的上下分别进行背景填充,然后将填充背景后的目标视频帧渲染到播放端的视频可显示区域中。

再比如,如图8所示,当目标视频帧的拍摄方向为竖屏方向,播放端的屏幕方向为横屏方向时,可以在缩小后的目标视频帧的左右分别进行背景填充,然后将填充背景后的目标视频帧渲染到播放端的视频可显示区域中。

另外,若从该视频数据中获取到任一方向帧,且该方向帧携带的拍摄方向信息指示的拍摄方向和该播放端的屏幕方向相同,则直接播放该至少一个目标视频帧中的每个目标视频帧。

比如,若该视频数据中的视频帧的拍摄方向均为横屏方向,播放端的屏幕方向也一直为横屏方向,则播放端获取到该视频数据中第一个视频帧之前的方向帧之后,即可确定该方向帧之后的视频帧的拍摄方向与该播放端的屏幕方向相同,并直接在横屏模式下播放该视频数据的视频帧。

进一步地,当该视频数据中还包括音频帧时,还可以一边播放视频帧,一边播放音频帧。

本发明实施例中,通过在拍摄端采集视频帧的过程中,在采集的第一个视频帧之前插入第一方向帧,以指示第一个视频帧的拍摄方向,并在之后采集每个视频帧时,当采集的视频帧的拍摄方向和上一个视频帧的拍摄方向不同时,在采集的视频帧之前插入第二方向帧,以指示当前采集的视频帧的拍摄方向,然后生成插入方向帧的视频数据,可以使得播放端在播放包括方向帧的视频数据的过程中,当获取到任一方向帧,且该方向帧指示的拍摄方向和播放端的屏幕方向不同时,根据播放端的屏幕方向和视频可显示区域的尺寸,对该方向帧和下一个方向帧之间的视频帧进行缩小处理,并在视频可显示区域中显示缩小后的视频帧,从而避免了对视频帧画面方向的旋转,保证了用户能够看到正向的视频画面。如此,在视频帧的拍摄方向和播放端的屏幕方向不同时,实现了对视频帧播放画面的自动调整,避免了用户需要手动旋转播放端的操作,提高了视频播放效果。

为了使读者易于理解本发明实施例提供的技术方案,下面将以直播场景中的主播端和观众端为例,对主播端和直播端执行的视频处理方法的技术过程进行示意性的说明:

主播端

1.1、在主播开始直播时,主播端可以注册屏幕方向事件监控函数,初始化拍摄方向变量zhubosdisvirtical为默认值true,初始化最后有效拍摄方向变量zhubolastvalidsdirection的值为zhubosdisvirtical的值,注册音视频采集回调函数,连接流媒体服务器,启动网络发送线程。其中,true用于指示竖屏方向。

1.2、利用主播端的屏幕方向事件监控函数,判断主播端当前的拍摄方向是横屏方向还是竖屏方向,若是横屏方向,记录zhubosdisvirtical为false,否则记录zhubosdisvirtical为true。

1.3、在音视频采集回调函数中,为采集到的音视频帧赋值时间戳,并判断帧类型,若采集到是视频帧,执行1.3.1,否则是音频帧,执行1.3.2。

1.3.1、对于采集的第一个视频帧,获取zhubosdisvirtical的值,并生成第一方向帧,将第一个方向帧放置于待发送视频队帧列中,第一方向帧的数据值为zhubosdisvirtical的值,然后编码第一个视频帧得到第一视频编码帧,并放置于待发送视频队帧列中。对于第一个视频帧之后的任一视频帧,判断当前的zhubolastvalidsdirection值是否等于zhubosdisvirtical,若不等于,生成第二方向帧,将第二个方向帧放置于待发送视频队帧列中,第二方向帧的数据值为zhubosdisvirtical的值,并将zhubosdisvirtical的值赋值给zhubolastvalidsdirection,然后对前述视频帧进行编码,得到视频编码帧,并放置于待发送视频队帧列中。

1.3.2、对于音频帧,对该音频帧进行编码,得到音频编码帧,并放置于待发送音频队帧列中。

1.4、网络发送线程不断从待发送音频队帧列或待发送视频队帧列中取出队列帧,按照流媒体协议封装后发送给流媒体服务器。

观众端

2.1、在观众观看直播时,观众端注册屏幕方向事件监控函数,初始化屏幕方向变量guanzhongsdisvirtical为默认值true,初始化最后有效屏幕方向变量zhubolastvalidsdirection1为默认值true,初始最后输出的音频的时间戳变量lastoutputastamp为0,连接流媒体服务器,启动网络接收与解码线程、启动音频输出并注册音频回调函数、以及启动视频渲染线程。其中,true用于指示竖屏方向。

2.2、观众端利用屏幕方向事件监控函数中,判断当前屏幕方向是横屏方向还是竖屏方向,若是横屏方向,记录guanzhongsdisvirtical为false,否则记录guanzhongsdisvirtical为true。

2.3、在网络接收与解码线程中,接收音视频编码帧并解码,执行如下步骤:

2.3.1、接收音视频编码帧,若是接收到音频编码帧执行2.3.2,否则执行2.3.3。

2.3.2对于接收到的音频编码帧,解码得到音频帧,并放置于音频输出队列中,转到2.3.1。

2.3.3对于其他帧,判断该帧的类型是否为方向帧类型。若是,则提取其值v1,并生成一个视频记录,视频记录的类型为视频拍摄方向类型、值为方向帧携带的拍摄方向信息v1;否则,对该帧进行解码,得到视频帧,并生成一个视频记录,视频记录的类型为可渲染视频帧类型、值为视频帧的视频数据v2。最后,将前述视频记录放置于视频输出队列中,转到2.3.1。

2.4在音频回调函数中,从音频输出队列获取音频帧,记录lastoutputastamp的值等于该音频帧的时间戳值,通过音频播放设备输出该音频帧。

2.5在视频渲染线程中,渲染输出视频其执行步骤如下:

2.5.1从视频输出队列获取一个视频记录,提取其类型t1与数据d1,若t1是视频拍摄方向类型,执行2.5.2,若t1为可渲染视频帧类型,执行2.5.3。

2.5.2记录zhubolastvalidsdirection1的值等于d1,转到2.5.1。

2.5.3根据d1,获取视频帧的时间戳s1,若s1大于lastoutputastamp,休眠预设时长,执行2.5.1,否则执行2.5.4。

2.5.4判断zhubolastvalidsdirection1与guanzhongsdisvirtical的值是否相等,若相等,根据d1获取视频图像数据并渲染到视频显示区域,执行2.5.1,否则执行2.5.5。

2.5.5如果zhubolastvalidsdirection1是false,即主播端的拍摄方向是横屏方向,而guanzhongsdisvirtical是true,即观众端是竖屏方向,则计算缩小比例,其值为视频可显示区域的宽度除以视频帧的宽度,按照该缩小比例对视频帧进行宽与高各个方向的缩小,并上下填充背景色,生成新的视频图像数据,并渲染到视频显示区域。否则,如果zhubolastvalidsdirection1为true,即主播端的拍摄方向为竖屏方向,而guanzhongsdisvirtical为false,即观众端是横屏方向,则计算缩小比例,其值为视频可显示区域的高度除以视频帧的高度,按照该缩小比例对视频帧进行宽与高各个方向的缩小,并左右填充背景色,生成新的视频图像数据,并渲染到视频显示区域,执行2.5.1。

图9是本发明实施例提供的一种视频处理装置的结构框图,如图9所示,该装置装置包括:

第一采集模块901,用于在拍摄过程中,采集视频帧;

检测模块902,用于在拍摄过程中,检测所述拍摄端的拍摄方向,所述拍摄方向包括横屏方向或竖屏方向;

第一生成模块903,用于对于采集的第一个视频帧,根据所述第一个视频帧的拍摄方向生成第一方向帧,将所述第一方向帧插在所述第一个视频帧之前,所述第一方向帧携带所述第一个视频帧的拍摄方向信息;

第二生成模块904,用于对于采集的所述第一个视频帧之后的每个视频帧,若所述视频帧的拍摄方向和所述视频帧的上一个视频帧的拍摄方向不同,则生成第二方向帧,将所述第二方向帧插在所述视频帧之前,所述第二方向帧携带所述视频帧的拍摄方向信息;

第三生成模块905,用于生成插入方向帧的视频数据,所述方向帧包括所述第一方向帧,或包括所述第一方向帧和所述第二方向帧。

可选地,检测模块902用于:

调用所述拍摄端的屏幕方向监控接口,通过所述屏幕方向监控接口,获取所述拍摄端的屏幕方向;

将获取的屏幕方向,确定为所述拍摄端的拍摄方向。

可选地,第一生成模块903用于:

根据所述第一个视频帧的拍摄方向,利用网络抽象层nal的扩展类型,生成携带所述第一个视频帧的拍摄方向信息的视频伪帧,将所述视频伪帧作为所述第一方向帧;

或者,

根据所述第一个视频帧的拍摄方向,利用补充增强信息sei提供的扩展方式,生成携带所述第一个视频帧的拍摄方向信息的增强帧,将所述增强帧作为所述第一方向帧。

可选地,所述装置还包括:

第一入队模块,用于将所述第一方向帧和第一个视频编码帧依次放置于待发送视频帧队列中,所述第一个视频编码帧是对所述第一个视频帧进行编码得到;

所述第三生成模块905,用于从所述待发送视频帧队列中依次取出视频队列帧,所述视频队列帧包括视频编码帧和方向帧;对取出的视频队列帧进行封装处理,得到视频流。

可选地,所述装置还包括:

第二采集模块,用于在拍摄过程中,采集音频帧;

第二入队模块,用于对于采集的每个音频帧,对所述音频帧进行编码,得到音频编码帧,将所述音频编码帧放置于待发送音频帧队列中;

第二出队模块,用于从所述音频帧队列中依次取出音频队列帧;

所述第三生成模块905,用于对取出的视频队列帧和音频队列帧进行封装处理,得到视频流。

可选地,所述装置还包括:

处理模块,用于若所述视频帧的拍摄方向和所述视频帧的上一个视频帧的拍摄方向相同,则将所述视频帧插在所述上一个视频帧之后。

本发明实施例中,通过在拍摄端采集视频帧的过程中,在采集的第一个视频帧之前插入第一方向帧,以指示第一个视频帧的拍摄方向,并在之后采集每个视频帧时,当采集的视频帧的拍摄方向和上一个视频帧的拍摄方向不同时,在采集的视频帧之前插入第二方向帧,以指示当前采集的视频帧的拍摄方向,然后生成插入方向帧的视频数据,可以使得播放端在播放包括方向帧的视频数据的过程中,可以根据其中的方向帧,确定该方向帧之后的视频帧的拍摄方向,当任一方向帧指示的拍摄方向和播放端的屏幕方向不同时,根据播放端的屏幕方向和视频可显示区域的尺寸,对该方向帧和下一个方向帧之间的视频帧进行缩小处理,并在视频可显示区域中显示缩小后的视频帧,从而避免了对视频帧画面方向的旋转,保证了用户能够看到正向的视频画面。如此,在视频帧的拍摄方向和播放端的屏幕方向不同时,实现了对视频帧播放画面的自动调整,避免了用户需要手动旋转播放端的操作,提高了视频播放效果。

图10是本发明实施例提供的一种视频处理装置的结构框图,如图10所示,所述装置包括:

获取模块1001,用于获取视频数据,所述视频数据包括多个视频帧和至少一个方向帧,每个方向帧携带所述方向帧的下一个视频帧的拍摄方向信息;

检测模块1002,用于在播放所述视频数据的过程中,检测所述播放端的屏幕方向,所述播放端的屏幕方向包括横屏方向或竖屏方向;

处理模块1003,用于若从所述视频数据中获取到任一方向帧,且所述方向帧携带的拍摄方向信息指示的拍摄方向和所述播放端的屏幕方向不同,则对于至少一个目标视频帧中的每个目标视频帧,根据所述播放端的屏幕方向和视频可显示区域的尺寸,缩小所述目标视频帧的尺寸,播放缩小后的所述目标视频帧,所述至少一个目标视频帧为所述方向帧和所述方向帧的下一个视频帧之间的视频帧。

可选地,所述处理模块1003包括:

确定单元,用于确定所述目标视频帧的缩小比例,所述缩小比例为第一边长与第二边长的比例,所述第一边长为所述播放端的视频可显示区域的高度和宽度中的最小值,所述第二边长为所述目标视频帧的高度和宽度中的最大值;

缩小模块,用于按照所述缩小比例,对所述目标视频帧进行缩小处理。

可选地,所述确定单元用于:

当所述方向帧携带的拍摄方向信息指示的拍摄方向为横屏方向,所述播放端的屏幕方向为竖屏方向时,将所述播放端的视频可显示区域的宽度和所述目标视频帧的宽度之间的比例,确定为所述缩小比例;

当所述方向帧携带的拍摄方向信息指示的拍摄方向为竖屏方向,所述播放端的屏幕方向为横屏方向时,将所述播放端的视频可显示区域的高度和所述目标视频帧的高度之间的比例,确定为所述缩小比例。

可选地,所述处理模块1003包括:

填充单元,用于按照所述播放端的视频可显示区域的尺寸,对所述缩小后的所述目标视频帧进行背景填充,得到填充后的所述目标视频帧,所述填充后的所述目标视频帧的尺寸与所述播放端的视频可显示区域的尺寸相同;

显示单元,用于在所述播放端的视频可显示区域中,显示所述填充后的所述目标视频帧。

可选地,所述装置还包括:

播放模块,用于若从所述视频数据中获取到任一方向帧,且所述方向帧携带的拍摄方向信息指示的拍摄方向和所述播放端的屏幕方向相同,则播放所述至少一个目标视频帧中的每个目标视频帧。

本发明实施例中,通过播放端在播放包括方向帧的视频数据的过程中,当获取到任一方向帧,且该方向帧指示的拍摄方向和播放端的屏幕方向不同时,根据播放端的屏幕方向和视频可显示区域的尺寸,对该方向帧和下一个方向帧之间的视频帧进行缩小处理,并在视频可显示区域中显示缩小后的视频帧,从而避免了对视频帧画面方向的旋转,保证了用户能够看到正向的视频画面。如此,在视频帧的拍摄方向和播放端的屏幕方向不同时,实现了对视频帧播放画面的自动调整,避免了用户需要手动旋转播放端的操作,提高了视频播放效果。

需要说明的是:上述实施例提供的视频处理装置在进行视频处理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的视频处理装置与视频处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图11是本发明实施例提供的一种终端1100的结构框图。该终端1100可以是:智能手机、平板电脑、mp3播放器(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端1100还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。

通常,终端1100包括有:处理器1101和存储器1102。

处理器1101可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1101可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1101也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(centralprocessingunit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1101可以在集成有gpu(graphicsprocessingunit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1101还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。

存储器1102可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1102还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1102中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1101所执行以实现本申请中方法实施例提供的视频处理方法。

在一些实施例中,终端1100还可选包括有:外围设备接口1103和至少一个外围设备。处理器1101、存储器1102和外围设备接口1103之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1103相连。具体地,外围设备包括:射频电路1104、触摸显示屏1105、摄像头1106、音频电路1107、定位组件1108和电源1109中的至少一种。

外围设备接口1103可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器1101和存储器1102。在一些实施例中,处理器1101、存储器1102和外围设备接口1103被集成在同一芯片或电路板上;在一些其他实施例中,处理器1101、存储器1102和外围设备接口1103中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。

射频电路1104用于接收和发射rf(radiofrequency,射频)信号,也称电磁信号。射频电路1104通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1104将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1104包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1104可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2g、3g、4g及5g)、无线局域网和/或wifi(wirelessfidelity,无线保真)网络。在一些实施例中,射频电路1104还可以包括nfc(nearfieldcommunication,近距离无线通信)有关的电路,本申请对此不加以限定。

显示屏1105用于显示ui(userinterface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1105是触摸显示屏时,显示屏1105还具有采集在显示屏1105的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1101进行处理。此时,显示屏1105还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1105可以为一个,设置终端1100的前面板;在另一些实施例中,显示屏1105可以为至少两个,分别设置在终端1100的不同表面或呈折叠设计;在再一些实施例中,显示屏1105可以是柔性显示屏,设置在终端1100的弯曲表面上或折叠面上。甚至,显示屏1105还可以设置成非矩形的不规则图形,也即异形屏。显示屏1105可以采用lcd(liquidcrystaldisplay,液晶显示屏)、oled(organiclight-emittingdiode,有机发光二极管)等材质制备。

摄像头组件1106用于采集图像或视频。可选地,摄像头组件1106包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及vr(virtualreality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1106还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。

音频电路1107可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1101进行处理,或者输入至射频电路1104以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1100的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1101或射频电路1104的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1107还可以包括耳机插孔。

定位组件1108用于定位终端1100的当前地理位置,以实现导航或lbs(locationbasedservice,基于位置的服务)。定位组件1108可以是基于美国的gps(globalpositioningsystem,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。

电源1109用于为终端1100中的各个组件进行供电。电源1109可以是交流电、直流电、一次性电池或可充电电池。当电源1109包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。

在一些实施例中,终端1100还包括有一个或多个传感器1110。该一个或多个传感器1110包括但不限于:加速度传感器1111、陀螺仪传感器1112、压力传感器1113、指纹传感器1114、光学传感器1115以及接近传感器1116。

加速度传感器1111可以检测以终端1100建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1111可以用于检测重力加速度在三个坐标轴上的分量。处理器1101可以根据加速度传感器1111采集的重力加速度信号,控制触摸显示屏1105以横向视图或纵向视图进行用户界面的显示。加速度传感器1111还可以用于游戏或者用户的运动数据的采集。

陀螺仪传感器1112可以检测终端1100的机体方向及转动角度,陀螺仪传感器1112可以与加速度传感器1111协同采集用户对终端1100的3d动作。处理器1101根据陀螺仪传感器1112采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变ui)、拍摄时的图像稳定、游戏控制以及惯性导航。

压力传感器1113可以设置在终端1100的侧边框和/或触摸显示屏1105的下层。当压力传感器1113设置在终端1100的侧边框时,可以检测用户对终端1100的握持信号,由处理器1101根据压力传感器1113采集的握持信号进行左右手识别或快捷操作。当压力传感器1113设置在触摸显示屏1105的下层时,由处理器1101根据用户对触摸显示屏1105的压力操作,实现对ui界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。

指纹传感器1114用于采集用户的指纹,由处理器1101根据指纹传感器1114采集到的指纹识别用户的身份,或者,由指纹传感器1114根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1101授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1114可以被设置终端1100的正面、背面或侧面。当终端1100上设置有物理按键或厂商logo时,指纹传感器1114可以与物理按键或厂商logo集成在一起。

光学传感器1115用于采集环境光强度。在一个实施例中,处理器1101可以根据光学传感器1115采集的环境光强度,控制触摸显示屏1105的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏1105的显示亮度;当环境光强度较低时,调低触摸显示屏1105的显示亮度。在另一个实施例中,处理器1101还可以根据光学传感器1115采集的环境光强度,动态调整摄像头组件1106的拍摄参数。

接近传感器1116,也称距离传感器,通常设置在终端1100的前面板。接近传感器1116用于采集用户与终端1100的正面之间的距离。在一个实施例中,当接近传感器1116检测到用户与终端1100的正面之间的距离逐渐变小时,由处理器1101控制触摸显示屏1105从亮屏状态切换为息屏状态;当接近传感器1116检测到用户与终端1100的正面之间的距离逐渐变大时,由处理器1101控制触摸显示屏1105从息屏状态切换为亮屏状态。

本领域技术人员可以理解,图11中示出的结构并不构成对终端1100的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1