本发明涉及终端技术领域。更具体地,涉及一种视频通话方法及系统。
背景技术:
随着终端技术和网络技术的快速发展,视频通话得到了越来越广泛的应用。在两个终端之间进行视频通话时,图像处理方法为:终端的摄像头采集到视频图像之后,在采集视频图像的本地终端对视频图像进行yuv分量旋转,再进行编码,最后通过网络传送给对方终端。其中,每一终端分别包括cpu、视频图像采集单元、收发单元、图像编码器、图像解码器和显示单元。
在两个终端之间进行视频通话时,如图1所示,主叫终端和被叫终端通过sip(sessioninitiationprotocol,会话初始协议)信令建立会话,并利用sdp(sessiondescriptionprotocol,会话描述协议)会话协商建立起主叫终端和被叫终端之间的视频通话。终端的视频图像的旋转角度值,是不进行传递的,无论是sip信令还是rtp(real-timetransportprotocol,实时传输协议)视频流。如图2所示,一方终端在本地通过视频图像采集单元采集视频图像,并在本地的cpu进行yuv分量旋转之后,输入到本地的图像编码器进行编码,之后将编码后的数据通过收发单元进行发送。如图3所示,对端通过收发单元收到码流后,通过图像解码器进行图像解码并通过显示单元进行显示。
视频通话过程对终端的cpu处理性能的消耗非常大,并且会导致终端的cpu发热严重,耗电快。经过分析,对视频图像进行yuv分量旋转占据了终端的cpu处理性能消耗的很大部分。且由于视频通话过程中视频图像采集是非常频繁的,数据量非常大,对视频图像进行旋转的任务更会导致增加本地终端的cpu的负荷,占据终端处理性能。
因此,需要提供一种简化终端处理任务、释放终端的cpu处理性能的视频通话方法及系统。
技术实现要素:
本发明的目的在于提供一种视频通话方法及系统。
为达到上述目的,本发明采用下述技术方案:
一种视频通话方法,包括如下步骤:
第一终端和第二终端通过sip信令建立会话:
第一终端向第二终端发送携带第一终端实时采集的第一视频图像的旋转角度值的呼叫消息;第二终端收到呼叫消息后向第一终端回复携带第二终端实时采集的第二视频图像的旋转角度值的200ok消息;第一终端收到200ok消息后向第二终端回复ack消息,建立视频通话;
第一终端和第二终端进行视频通话:
第一终端向第二终端发送第一终端实时采集的第一视频图像,同时,第二终端向第一终端发送第二终端实时采集的第二视频图像;
第一终端根据200ok消息中第二视频图像的旋转角度值初始化第一终端的图像解码器,对第二视频图像进行图像旋转;同时,第二终端根据呼叫消息中第一视频图像的旋转角度值初始化第二终端的图像解码器,对第一视频图像进行图像旋转。
优选地,该方法还包括如下步骤:在视频通话的过程中:
第一终端和第二终端分别监测自身实时采集的第一视频图像和第二视频图像的旋转角度值是否发生变化:
若第一视频图像的旋转角度值发生变化,则第一终端向第二终端发送携带第一终端实时采集的第一视频图像的旋转角度值的info消息,第二终端的图像解码器根据info消息中第一视频图像的旋转角度值对第一视频图像进行图像旋转;
若第二视频图像的旋转角度值发生变化,则第二终端向第一终端发送携带第二终端实时采集的第二视频图像的旋转角度值的info消息,第一终端的图像解码器根据info消息中第二视频图像的旋转角度值对第二视频图像进行图像旋转。
优选地,第一视频图像的旋转角度值通过第一终端的重力感应器检测,第二视频图像的旋转角度值通过第二终端的重力感应器检测。
优选地,info消息的发送控制为当第一终端或第二终端监测到第一视频图像或第二视频图像的旋转角度值发生变化后,延迟最小发送间隔后再发送info消息。
优选地,所述最小发送间隔为1秒。
一种视频通话系统,包括第一终端和第二终端,
第一终端向第二终端发送携带第一终端实时采集的第一视频图像的旋转角度值的呼叫消息;第二终端收到呼叫消息后向第一终端回复携带第二终端实时采集的第二视频图像的旋转角度值的200ok消息;第一终端收到200ok消息后向第二终端回复ack消息,建立视频通话;
第一终端向第二终端发送第一终端实时采集的第一视频图像,同时,第二终端向第一终端发送第二终端实时采集的第二视频图像;
第一终端根据200ok消息中第二视频图像的旋转角度值初始化第一终端的图像解码器,对第二视频图像进行图像旋转;同时,第二终端根据呼叫消息中第一视频图像的旋转角度值初始化第二终端的图像解码器,对第一视频图像进行图像旋转,进行正确播放。
优选地,第一终端和第二终端还分别监测自身实时采集的第一视频图像和第二视频图像的旋转角度值是否发生变化:
若第一视频图像的旋转角度值发生变化,则第一终端向第二终端发送携带第一终端实时采集的第一视频图像的旋转角度值的info消息,第二终端的图像解码器根据info消息中第一视频图像的旋转角度值对第一视频图像进行图像旋转;
若第二视频图像的旋转角度值发生变化,则第二终端向第一终端发送携带第二终端实时采集的第二视频图像的旋转角度值的info消息,第一终端的图像解码器根据info消息中第二视频图像的旋转角度值对第二视频图像进行图像旋转。
优选地,第一视频图像的旋转角度值通过第一终端的重力感应器检测,第二视频图像的旋转角度值通过第二终端的重力感应器检测。
优选地,info消息的发送控制为当第一终端或第二终端监测到第一视频图像或第二视频图像的旋转角度值发生变化后,延迟最小发送间隔后再发送info消息。
优选地,所述第一终端和第二终端的图像解码器分别是内嵌有yuv分量旋转功能的图像解码器。
本发明的有益效果如下:
本发明将对视频图像进行图像yuv分量旋转的任务由采集视频图像的本地终端的cpu执行变为进行视频通话的对方终端的图像解码器执行,降低了视频通话过程中终端的cpu的运算负荷,释放了终端的cpu的处理性能,进而可延长终端的续航能力。另一方面,本发明通过sip信令交互,可实现实时对视频通话中视频图像的旋转调整,对图像进行精确播放,提升了用户感受。
附图说明
下面结合附图对本发明的具体实施方式作进一步详细的说明。
图1示出现有技术中两个终端通过sip信令建立会话,并利用sdp会话协商建立视频通话的流程图,其中:p-cscf代表proxy-callservercontrolfunction,代理呼叫会话控制实体;s-cscf代表serving-callservercontrolfunction,服务呼叫会话控制实体。
图2示出现有技术中发送终端的任务流程图。
图3示出现有技术中接收终端的任务流程图。
图4示出本发明公开的视频通话方法的流程图。
具体实施方式
为了更清楚地说明本发明,下面结合优选实施例和附图对本发明做进一步的说明。附图中相似的部件以相同的附图标记进行表示。本领域技术人员应当理解,下面所具体描述的内容是说明性的而非限制性的,不应以此限制本发明的保护范围。
本发明公开的一种视频通话方法,视频通话的两个终端利用重力感应器检测自身采集的视频图像的旋转角度值,并利用sip信令交互,将旋转角度值实时通知对方终端,对方终端的内嵌的yuv旋转功能的图像解码器根据旋转角度值对接收的对方视频图像进行图像旋转。
本发明公开的一种视频通话方法的流程为:
第一终端和第二终端通过sip信令建立会话:
第一终端向第二终端发送携带第一终端实时采集的第一视频图像的旋转角度值的呼叫消息;第二终端收到呼叫消息后向第一终端回复携带第二终端实时采集的第二视频图像的旋转角度值的200ok消息;第一终端收到200ok消息后向第二终端回复ack消息,建立视频通话;
第一终端和第二终端进行视频通话:
第一终端和第二终端分别实时采集图像,并将实时采集的图像进行编码得到编码的第一视频图像和第二视频图像;
第一终端向第二终端发送第一终端实时采集的第一视频图像,同时,第二终端向第一终端发送第二终端实时采集的第二视频图像;
第一终端根据200ok消息中第二视频图像的旋转角度值初始化第一终端的图像解码器,对第二视频图像进行图像旋转,调整第二视频图像播放的角度,以进行正确播放;同时,第二终端根据呼叫消息中第一视频图像的旋转角度值初始化第二终端的图像解码器,对第一视频图像进行图像旋转,调整第一视频图像播放的角度,以进行正确播放。
上述方法将对视频图像进行图像旋转的任务由采集视频图像的本地终端的cpu执行变为进行视频通话的对方终端的图像解码器执行,从而降低了视频通话过程中两方终端的cpu的运算负荷,释放了两方终端的cpu的处理性能。
根据本发明的优选实施方案,该方法还包括如下步骤:
在视频通话的过程中:
第一终端和第二终端分别监测自身实时采集的第一视频图像和第二视频图像的旋转角度值是否发生变化:
若第一视频图像的旋转角度值发生变化,则第一终端向第二终端发送携带第一终端实时采集的第一视频图像的旋转角度值的info消息,第二终端的图像解码器根据info消息中第一视频图像的旋转角度值对第一视频图像进行图像旋转,调整第一视频图像播放的角度,以进行正确播放;
若第二视频图像的旋转角度值发生变化,则第二终端向第一终端发送携带第二终端实时采集的第二视频图像的旋转角度值的info消息,第一终端的图像解码器根据info消息中第二视频图像的旋转角度值对第二视频图像进行图像旋转,调整第二视频图像播放的角度,以进行正确播放。
这样,在视频通话的过程中,可以实现通过根据实时监测的视频图像的旋转角度值的变化对视频图像实时进行旋转,对视频图像播放角度的实时调整,且对视频图像实时进行旋转的过程不占用终端的cpu的处理性能,并进一步改善了视频图像的播放效果,改善了用户体验。
第一视频图像的旋转角度值通过第一终端的重力感应器检测,第二视频图像的旋转角度值通过第二终端的重力感应器检测。
为保证终端功能稳定,info消息的发送控制为当第一终端或第二终端监测到第一视频图像或第二视频图像的旋转角度值发生变化后,至少延迟最小发送间隔后再发送info消息。该最小发送间隔的推荐值为1秒。
图像解码器根据对方终端传送的视频图像的旋转角度值对对方终端传送的视频图像进行旋转的旋转过程嵌入在图像解码器的帧内预测、帧间预测或者环路滤波中。
如图4所示,本发明公开的一种视频通话方法包括如下步骤:
步骤1、第一终端向第二终端发送携带第一终端实时采集的第一视频图像的旋转角度值的呼叫(invite)消息;
步骤2、第二终端收到呼叫消息后向第一终端回复携带第二终端实时采集的第二视频图像的旋转角度值的200ok(同意)消息;
步骤3、第一终端收到200ok消息后向第二终端回复ack(确认)消息,建立视频通话;
第一终端和第二终端分别实时采集图像,并将实时采集的图像进行编码得到编码的第一视频图像和第二视频图像;
步骤4、第一终端向第二终端发送第一终端实时采集的第一视频图像,第二终端向第一终端发送第二终端实时采集的第二视频图像;
步骤5、第一终端根据200ok消息中第二视频图像的旋转角度值初始化第一终端的图像解码器,对第二视频图像进行图像旋转,调整第二视频图像播放的角度,以进行正确播放;第二终端根据呼叫消息中第一视频图像的旋转角度值初始化第二终端的图像解码器,对第一视频图像进行图像旋转,调整第一视频图像播放的角度,以进行正确播放;
步骤6、在视频通话的过程中:第一终端和第二终端分别监测自身实时采集的第一视频图像和第二视频图像的旋转角度值是否发生变化:
若第一视频图像的旋转角度值发生变化,则第一终端向第二终端发送携带第一终端实时采集的第一视频图像的旋转角度值的info(告知)消息,第二终端的图像解码器根据info消息中第一视频图像的旋转角度值对第一视频图像进行图像旋转,调整第一视频图像播放的角度,以进行正确播放;
若第二视频图像的旋转角度值发生变化,则第二终端向第一终端发送携带第二终端实时采集的第二视频图像的旋转角度值的info消息,第一终端的图像解码器根据info消息中第二视频图像的旋转角度值对第二视频图像进行图像旋转,调整第二视频图像播放的角度,以进行正确播放。
其中,第一终端监测自身实时采集的第一视频图像的旋转角度值是否发生变化是通过第一终端的重力感应器实时检测旋转角度值,再由第一终端进行数值变化的监测实现的;第二终端监测自身实时采集的第二视频图像的旋转角度值是否发生变化是通过第二终端的重力感应器实时检测旋转角度值,再由第二终端进行数值变化的监测实现的;发现实时采集的视频图像的旋转角度值发生了变化则利用sip信令中的info消息实时通知对方。
以下为sip交互消息示例,其中,新增了sip的头域内容,图像旋转角度。0、90、180、270分别代表旋转了0度、90度、180度、270度,也可以是其他旋转角度值:
invitesip:888000@172.16.0.1sip/2.0
call-id:d45ecd118f2c5de8a3c05654eb0b2a51@192.168.0.101
cseq:1invite
from:"888009"<sip:888009@172.16.0.1>;tag=4h2m81yc
to:"888000"<sip:888000@172.16.0.1>
via:sip/2.0/udp192.168.0.101:5060;branch=z9hg4bk0b70b59e5d241462a565c0682eed55aa;rport
p-special-call-info:type=rotation;degree=0//或者是type=rotation,degree=0、90、180、270
max-forwards:70
route:<sip:sbc@192.168.0.33:8000;lr>
p-associated-address:sip:888009@172.16.0.1
contact:<sip:192.168.0.101:5060>
allow:invite,message,prack,update,bye,cancel,ack
user-agent:sphone2.0.1stamp151215
content-type:application/sdp
session-expires:1800;refresher=uac
supported:timer
content-length:0
sip/2.0200ok
from:
<sip:888000@172.16.0.1>;tag=7f284b4a5cb0-10010ac-13dc-50029-111d-3980af46-111d
to:<sip:888009@172.16.0.1>;tag=t9mvx993
call-id:7f284b2158e8-10010ac-13dc-50029-111d-24149728-111d
cseq:1invite
via:sip/2.0/udp192.168.0.33:8000;branch=z9hg4bk-111d-42dc5f-28393420
p-special-call-info:type=rotation;degree=0//type=rotation,degree=0、90、180、270
record-route:<sip:192.168.0.33:8000;lr>
contact:<sip:192.168.0.101:5060>
route:<sip:192.168.0.33:8000;lr>
content-type:application/sdp
require:timer
session-expires:3600;refresher=uac
content-length:493
info:
infosip:sbc@192.168.0.54sip/2.0
from:<sip:1560010@172.16.0.1>;tag=5cd9470-8700a8c0-cdcd-50029-1c-38aaa0f7-1c
to:<sip:dsconf@172.16.0.1>;tag=7fbfef224ef8-10010ac-13dc-50029-1a2e-506aea3-1a2e
call-id:5ce4738-8700a8c0-cdcd-50029-1c-59df48c1-1c
cseq:2info
via:sip/2.0/udp192.168.0.135:52685;branch=z9hg4bk-2a-a410-69e6eb11
p-special-call-info:type=rotation;degree=0//type=rotation,degree=0、90、180、270
max-forwards:70
supported:timer
route:<sip:192.168.0.54:8000;lr>
contact:<sip:192.168.0.135:52685>
content-type:text/xml;charset=utf-8
content-length:0
其中,
p-special-call-info头中,type=rotation表示旋转,degree为旋转角度值,旋转角度值分为0、180、90、270四种,默认旋转90度,为终端竖屏状态下的角度值。
android终端可通过系统函数获取该终端实时采集的视频图像的旋转角度值,系统函数为:this.getwindowmanager().getdefaultdisplay().getrotaion()。
当一方终端收到对方终端角度发生变化的info消息后,获取对方终端最新的角度,然后根据角度重新设定其图像解码器的参数,进行正确播放。
本发明公开的一种视频通话系统,包括第一终端和第二终端,
第一终端向第二终端发送携带第一终端实时采集的第一视频图像的旋转角度值的呼叫消息;第二终端收到呼叫消息后向第一终端回复携带第二终端实时采集的第二视频图像的旋转角度值的200ok消息;第一终端收到200ok消息后向第二终端回复ack消息,建立视频通话;
第一终端向第二终端发送第一终端实时采集的第一视频图像,同时,第二终端向第一终端发送第二终端实时采集的第二视频图像;
第一终端根据200ok消息中第二视频图像的旋转角度值初始化第一终端的图像解码器,对第二视频图像进行图像旋转;同时,第二终端根据呼叫消息中第一视频图像的旋转角度值初始化第二终端的图像解码器,对第一视频图像进行图像旋转。
上述系统将对视频图像进行图像旋转的任务由采集视频图像的本地终端的cpu执行变为进行视频通话的对方终端的图像解码器执行,从而降低了视频通话过程中两方终端的cpu的运算负荷,释放了两方终端的cpu的处理性能。
在根据本发明的系统中,第一终端和第二终端还分别监测自身实时采集的第一视频图像和第二视频图像的旋转角度值是否发生变化:
若第一视频图像的旋转角度值发生变化,则第一终端向第二终端发送携带第一终端实时采集的第一视频图像的旋转角度值的info消息,第二终端的图像解码器根据info消息中第一视频图像的旋转角度值对第一视频图像进行图像旋转;
若第二视频图像的旋转角度值发生变化,则第二终端向第一终端发送携带第二终端实时采集的第二视频图像的旋转角度值的info消息,第一终端的图像解码器根据info消息中第二视频图像的旋转角度值对第二视频图像进行图像旋转。
这样,在视频通话的过程中,可以实现通过根据实时监测的视频图像的旋转角度值的变化对视频图像实时进行旋转,对视频图像播放角度的实时调整,且对视频图像实时进行旋转的过程不占用终端的cpu的处理性能。
第一视频图像的旋转角度值通过第一终端的重力感应器检测,第二视频图像的旋转角度值通过第二终端的重力感应器检测。
info消息的发送控制为当第一终端或第二终端监测到第一视频图像或第二视频图像的旋转角度值发生变化后,延迟最小发送间隔后再发送info消息。该最小发送间隔推荐值为1秒。
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定,对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动,这里无法对所有的实施方式予以穷举,凡是属于本发明的技术方案所引伸出的显而易见的变化或变动仍处于本发明的保护范围之列。