一种视频画面调整方法及系统与流程

文档序号:11237015阅读:611来源:国知局
一种视频画面调整方法及系统与流程

本申请设计涉及计算机软件的音视频处理领域,特别涉及一种视频画面调整方法及系统。



背景技术:

随着视频编解码和网络传输技术的不断发展,手机的运算性能不断增强,手机在直播领域部分场景中,大有代替传统摄像机的趋势。以手机作为采集端的移动直播因其便携性,灵活性,操作简便等特点,得到越来越多的主播用户青睐。针对手机硬件特点开发的直播软件,可大大降低使用者的专业知识门槛,也会带来诸多过去直播中未显现的问题,如使用手机摄像时,手机经常会被使用者上下倒握,或者横竖旋转,此时接收端若不做相应处理,播放的视频图像会上下左右颠倒,极易使观众产生眩晕感。对于该技术问题本提案提出一种视频画面调整方法及系统。



技术实现要素:

鉴于上述问题,本申请提供了一种视频画面调整方法及系统,解决了移动直播接收端因直播设备运动、旋转或颠倒造成的画面旋转或颠倒,使观众产生眩晕感的问题。

一方面,本申请实施例提供了一种视频画面调整方法,包括:

主播端获取摄像头的方向值;

所述主播端将所述摄像头的方向值与同步拍摄的当前帧的对应关系写入元数据信息;

接收端接收所述元数据信息和当前帧的画面内容;

所述接收端从所述元数据信息中获取所述摄像头的方向值与当前帧的对应关系;

所述接收端根据所述摄像头的方向值与当前帧的对应关系,将当前帧的画面内容调整为正向。

可选地,所述主播端获取摄像头的方向值还包括:

所述主播端获取摄像头的xyz三维方向矢量;

所述主播端将所述xyz三维方向矢量转换为所述方向值。

可选地,所述主播端获取摄像头的xyz三维方向矢量包括:

当所述主播端的操作系统为android操作系统时,通过orientationeventlistener函数获取所述摄像头的方向值;或者,

所述主播端的操作系统为ios时,通过uideviceorientation枚举类获取所述摄像头的方向值。

可选地,所述接收端根据所述摄像头的方向值与当前帧的对应关系,将当前帧的画面内容调整为正向包括:

接收端从元数据信息中获取当前帧的旋转角度;

若当前帧的旋转角度为0度、90度、180度或270度,则将当前帧的画面内容反向旋转与所述旋转角度相同的角度。

可选地,所述主播端获取摄像头的xyz三维方向矢量包括:

当所述接收端使用androidmediacodec播放时,将所述当前帧的旋转角度输入至mediacodec的rotate参数;

当所述接收端使用android操作系统的软件解码器播放时,将所述当前帧的旋转角度输入至surface的rotate参数;或者,

当所述接收端使用ios硬件或者软件作为播放器时,将所述当前帧的旋转角度输入至cgaffinetransformrotate。

另一方面,本申请实施例还提供了一种视频画面调整系统,包括:主播端和接收端,

所述主播端包括:

第一获取模块,用于获取摄像头的方向值;

写入模块,用于将所述摄像头的方向值与同步拍摄的当前帧的对应关系写入元数据信息;

所述接收端包括:

接收模块,用于从所述元数据信息中获取所述摄像头的方向值与当前帧的对应关系;

第二获取模块,用于从所述元数据信息中获取所述摄像头的方向值与当前帧的对应关系;

调整模块,用于根据所述摄像头的方向值与当前帧的对应关系,将当前帧的画面内容调整为正向。

可选地,所述第一获取模块还包括:

获取子模块,用于获取摄像头的xyz三维方向矢量并将所述xyz三维方向矢量转换为所述方向值。

可选地,所述获取子模块包括:

第一获取子模块,用于主播端采用的操作系统为android操作系统时,通过orientationeventlistener函数获取所述摄像头的方向值;或者,

第二获取子模块,用于主播端采用的操作系统为ios时,通过uideviceorientation枚举类获取所述摄像头的方向值。

可选地,所述调整模块包括:

调整子模块,用于从元数据信息中获取当前帧的旋转角度;

若当前帧的旋转角度为0度、90度、180度或270度,则将当前帧的画面内容反向旋转与所述旋转角度相同的角度。

可选地,所述调整子模块包括:

第一调整子模块,用于接受端采用androidmediacodec解码时,将所述当前帧的旋转角度输入至mediacodec的rotate参数;

第二调整子模块,用于接收端当所述调整模块使用android操作系统的软件解码器播放时,将所述当前帧的旋转角度输入至surface的rotate参数;或者,

第三调整子模块,用于接收端使用ios硬件或者软件作为播放器时,将所述当前帧的旋转角度输入至cgaffinetransformrotate。

本申请提供的一种视频画面调整方法及系统,利用当前手机具备的传感器数据作为依据,使播放画面能自动根据主播手机当前的旋转状态进行0度、90度、180度或270度四个方向的调节。在实际应用中,无论主播端在直播时设备处于颠倒或旋转状态,接收端总可以自适应的调节画面,避免画面旋转造成的观看不适。

附图说明

图1为本申请一实施例提供的一种视频画面调整方法的流程图;

图2为本申请一实施例提供的接收端使用状态参考图;

图3为本申请一实施例提供的一种视频画面调整系统的结构示意图。

具体实施方式

在下面的描述中阐述了很多具体细节以便于充分理解本申请,但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。在本申请中,提供了一种视频画面调整方法及系统。下面结合附图对本申请的具体实施方式进行描述。

参见图1,本申请实施例提供一种视频画面调整方法,包括:步骤101至105。

步骤101:主播端获取摄像头的方向值。

在本申请实施例中,所述主播端获取摄像头的方向值包括:

所述主播端获取摄像头的xyz三维方向矢量;

所述主播端将所述xyz三维方向矢量转换为所述方向值。

参见图2,图2为本申请中实施例的主播端的手机100的使用状态参考图。在本实施例中,以手机屏幕直立时,垂直于手机屏幕所在平面的方向为z轴,主播端拍摄时,手机100围绕所述z轴旋转会导致画面颠倒。本申请实施例中所述的方向值,是根据摄像头的xyz三维方向矢量获取的主播端在xy方向上的角度。以主播端为手机为例,手机100直立并且拍摄的人物或者物体直立时的角度为0度,手机100绕z轴旋转至90度、180度或者270度的方向示意图可以参见图2。

实际应用中,安装了不同操作系统述主播端可以通过不同的函数来获取所述方向值。

例如,若主播端操作系统为android,所述主播端android操作系统可以通过sensormanager类,具体的可以通过orientationeventlistener函数获取摄像头的旋转角度,并将所述摄像头的旋转角度转换为方向值;若所述主播端操作系统为ios时,可以通过coremotion类,具体的所述主播端ios可以通过uideviceorientation枚举类获取摄像头的旋转角度,并将所述摄像头的旋转角度转换为方向值。

步骤102:所述主播端将所述摄像头的方向值与同步拍摄的当前帧的对应关系写入元数据信息。

在本申请实施例中,所述元数据信息为描述所述方向值与同步拍摄的当前帧的对应关系的数据,用于描述所述方向值与同步拍摄的当前帧的对应关系属性的信息。

步骤103:接收端接收所述元数据信息和当前帧的画面内容。

步骤104:所述接收端从所述元数据信息中获取所述摄像头的方向值与当前帧的对应关系。

在本申请的实施例中,使用不同播放器的接收端,可以通过不同的函数来获取所述摄像头的方向值与当前帧的对应关系。

步骤105:所述接收端根据所述摄像头的方向值与当前帧的对应关系,将当前帧的画面内容调整为正向。

本申请实施例提供的一种视频画面调整方法,播放时通过解析主播端摄像头的方向值与同步拍摄的当前帧的对应关系的元数据信息,调整接收端视频画面,在实际应用中,无论主播端在直播时设备处于颠倒或旋转状态,接收端总可以自适应的调节画面,避免画面旋转造成的观看不适。

在本申请的实施例中,所述画面的正向定义为人或者物体处于直立状态,此状态时摄像头的角度对应为0度。

在本申请实施例中,所述接收端根据所述摄像头的方向值与当前帧的对应关系,将当前帧的画面内容调整为正向包括:

接收端从元数据信息中获取当前帧的旋转角度;

若当前帧的旋转角度为0度、90度、180度或270度,则将当前帧的画面内容反向旋转与所述旋转角度相同的角度。

在本申请的具体实施例中,以手机屏幕直立时的角度为0度,垂直于手机屏幕所在平面的方向为z轴,手机100以所述z轴为旋转轴,依次旋转的角度为90度、180度或270度,具体方向示意图参见图2。

本申请实施例提供的一种视频画面调整方法,播放时通过解析主播端摄像头的方向值与同步拍摄的当前帧的对应关系的元数据信息,调整接收端视频画面,在实际应用中,无论主播端在直播时设备处于颠倒或旋转状态,接收端总可以自适应的调节画面,避免画面旋转造成的观看不适。

需要说明的是,本申请实施例提供的视频画面调整方法对于主播端和接收端的操作系统一致性不作要求。以android操作系统或者是ios为例,主播端无论是android操作系统或者是ios,其获得的摄像头的旋转角度之后,将所述摄像头的方向值与同步拍摄的当前帧的对应关系记录在实时消息传输协议(rtmp,realtimemessagingprotocol)元数据信息中,rtmp数据信息格式与操作系统无关,而接收端无论是android操作系统或者ios,均可以通过读取rtmp元数据信息,获得摄像头的方向值与同步拍摄的当前帧的对应关系,接收端在获取摄像头的方向值与同步拍摄的当前帧的对应关系之后,再根据android操作系统或者ios各自的方法旋转当前帧,即可获得正向的画面内容。

下面以主播端和接收端的操作系统都为android操作系统时为例,对本申请实施例提供的一种是视频画面调整方法进行说明。

本申请实施例中,所述主播端操作系统为android操作系统时,所述主播端android操作系统通过sensormanager类,具体的通过orientationeventlistener函数获取摄像头的旋转角度,并将所述摄像头的旋转角度转换为方向值,写入到rtmp协议中的元数据信息中。

在本申请实施例中,所述接收端操作系统为android操作系统时,所述接收端从rtmp协议中读取元数据信息,获取所述摄像头的方向值与当前帧的对应关系,并且获取视频的旋转角度。

在本申请的实施例中,所述接收端操作系统为android操作系统时,根据所使用的的播放器的不同存在两种情况:

当所述接收端使用androidmediacodec播放时,将所述当前帧的旋转角度输入至mediacodec的rotate参数;

或者,当所述接收端使用android操作系统的软件解码器播放时,将所述当前帧的旋转角度输入至surface的rotate参数。

本申请提供的一种视频画面调整方法,利用当前加载了android操作系统的手机具备的传感器数据作为依据,使播放画面能自动根据主播手机当前的旋转状态进行0度、90度、180度或者270度四个方向的调节。在实际应用中,无论主播端在直播时设备处于颠倒或旋转状态,接收端总可以自适应的调节画面,避免画面旋转造成的观看不适。

在本申请的另一实施例中,以主播端和接收端的操作系统都为ios时为例,对本申请实施例提供的一种是视频画面调整方法进行说明。

本申请实施例中,所述主播端操作系统为ios时,所述主播端ios通过coremotion类,具体的通过uideviceorientation枚举类获取摄像头的旋转角度,并将所述摄像头的旋转角度转换为方向值,写入到rtmp协议中的元数据信息中。

在本申请实施中,所述接收端操作系统为ios时,所述接收端从rtmp协议中读取元数据信息,获取所述摄像头的方向值与当前帧的对应关系,并且获取视频的旋转角度。

在本申请的实施例中,当所述接收端使用ios硬件或者软件作为播放器时,将所述当前帧的旋转角度输入至cgaffinetransformrotate,并根据运算程序将画面调整为正向。

本申请提供的一种视频画面调整方法,利用当前ios手机具备的传感器数据作为依据,使播放画面能自动根据主播手机当前的旋转状态进行0度、90度、180度或270度四个方向的调节。在实际应用中,无论主播端在直播时设备处于颠倒或者旋转状态,接收端总可以自适应的调节画面,避免画面旋转造成的观看不适。

参见图3,本申请提供了一种视频画面调整系统,包括:主播端和接收端,

所述主播端包括:

第一获取模块201,用于获取摄像头的方向值;

写入模块202,用于将所述摄像头的方向值与同步拍摄的当前帧的对应关系写入元数据信息;

所述接收端包括:

接收模块203,用于从所述元数据信息中获取所述摄像头的方向值与当前帧的对应关系;

第二获取模块204,用于从所述元数据信息中获取所述摄像头的方向值与当前帧的对应关系;

调整模块205,用于根据所述摄像头的方向值与当前帧的对应关系,将当前帧的画面内容调整为正向。

本申请实施例提供的一种视频画面调整系统,播放时通过解析主播端摄像头的方向值与同步拍摄的当前帧的对应关系的元数据信息,调整接收端视频画面,在实际应用中,无论主播端在直播时设备处于颠倒或旋转状态,接收端总可以自适应的调节画面,避免画面旋转造成的观看不适。

在本申请实施例中,所述调整模块205包括:

调整子模块,用于从元数据信息中获取当前帧的旋转角度;

若当前帧的旋转角度为0度、90度、180度或270度,则将当前帧的画面内容反向旋转与所述旋转角度相同的角度。

本申请的实施例中,在不同的操作系统中可以通过不同的函数将当前帧的画面内容反向旋转与所述旋转角度相同的角度,具体可以参见方法实施例中对应的部分。

本申请实施例提供的一种视频画面调整系统,播放时通过解析主播端摄像头的方向值与同步拍摄的当前帧的对应关系的元数据信息,调整接收端视频画面,在实际应用中,无论主播端在直播时设备处于颠倒或旋转状态,接收端总可以自适应的调节画面,避免画面旋转造成的观看不适。

需要说明的是,所述视频画面调整方法中的主播端或接收端所执行的步骤如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被计算机执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或系统、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该申请仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。

上面结合附图对本申请优选的具体实施方式和实施例作了详细说明,但是申请并不限于上述实施方式和实施例,在本领域技术人员所具备的知识范围内,还可以在不脱离本申请构思的前提下做出各种变化。

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