一种可视电话的实现方法及移动终端 【技术领域】
本发明涉及移动通信技术领域,尤其涉及一种可视电话的实现方法及移动终端。
背景技术
随着3G(Third Generation,第三代移动通信)技术的普及和发展,作为3G重要的业务——可视电话也日渐被广大消费者所接收和喜爱。可视电话是一种集图像、声音于一体的多媒体通信业务,其可以实现人们面对面的实时沟通效果,即通话双方在通话过程中既闻其声、又见其人。但是现有3G可视电话中,总是先听见声音,后看到图像,视频图像的显示明显的滞后于音频声音的播放,滞后时间一般约1~2秒(各厂家的终端略有差异),而目前中国移动的规范UE-SEV-Video-001和3GPP(Third Generation Partnership Project,第三代合作伙伴计划)的标准中,要求可视电话的通信双方点对点的音频和视频的延时不超过1.2秒。
可视电话中音频和视频不同步的原因是:当前的3G移动终端中,由可视电话的视频协议栈H324M来负责接受通信对端传过来的音/视频数据,并负责把音频数据和视频数据以帧为单位分开,音频数据通过函数接口发送给音频解码器的驱动程序,目前国内的音频数据大多是AMR格式。同时,把视频数据发送给视频解码器(如CORELOGIC公司的MUSE解码芯片或者MV公司的MV解码芯片)的驱动程序,其格式大多为H.263或者MPEG4等。目前机制是视频协议栈H324M把音/视频数据送出去后就不再关心了,最后到底什么时候能解码出来,跟使用的编解码芯片速度有关。一般音频数据的数据量小,为12KBPS/秒左右,由协议栈发来的音频数据很快就可进行解码了,延迟不超过200毫秒(0.2秒)。而视频数据的数据量是48KBPS/秒左右,可见视频的数据量大约比音频的数据量大4倍,而且需要先在缓存中排队,等待队列前面的视频数据处理完毕了才能进行解码,导致延迟的时间一般1~2秒不等。这样,由于音频解码器和视频解码器的不同步工作,也就造成了音频数据和视频数据播放的不同步。比如,用户A通过可视电话讲一句话,用户B方先听见他的这句话,大约1~2秒后,用户B才能看到用户A的表情。而此时,用户A可能继续讲另一句话了,造成了不匹配。
综上可知,现有可视电话技术在实际使用上显然存在不便与缺陷,所以有必要加以改进。
【发明内容】
针对上述的缺陷,本发明的目的在于提供一种可视电话的实现方法及移动终端,其能改善可视电话中音频和视频的同步性能。
为了实现上述目的,本发明提供一种可视电话的实现方法,所述方法包括步骤有:
A、可视电话通话开始,移动终端将收到的视频数据和音频数据分别发送给本地的视频解码器和音频解码器;
B、所述视频解码器将收到的所述视频数据进行缓冲,并获取待解码的视频数据的时间戳发送给所述音频解码器,所述视频解码器再对所述待解码的视频数据进行解码;
C、所述音频解码器将收到的所述音频数据进行缓冲,并获取被缓冲的音频数据的时间戳,在收到所述待解码的视频数据的时间戳后,将具有相同时间戳的音频数据进行解码。
上述方法,其所述步骤A之前进一步包括音/视频同步模式设置步骤,在所述移动终端上设置音/视频同步模式。
上述方法,其所述音/视频同步模式设置步骤中,所述移动终端将所述音/视频同步模式的设置项存储到本地数据库中;在所述视频解码器对视频数据进行解码之前,所述移动终端检查本地数据库中的设置项,若设置了所述音/视频同步模式则执行音/视频同步通话程序。
上述方法,其所述步骤A进一步包括:所述移动终端的协议栈收到网络侧发来的音/视频数据后,检查所述音/视频数据中的时间戳,把具有相同时间戳的所述视频数据和音频数据分开,并将所述视频数据和音频数据分别发送给所述视频解码器和音频解码器。
上述方法,其所述移动终端的协议栈为H324M协议栈。
上述方法,其所述步骤B中通过H263协议获取所述待解码的视频数据的时间戳。
上述方法,其所述步骤C中音频解码器收到所述音频数据后,建立至少一缓冲区来存放所述音频数据,并获取所述缓冲区中的音频数据的时间戳,在收到所述待解码的视频数据的时间戳后,检索所述缓冲区中音频数据的时间戳,将与所述待解码的视频数据具有相同时间戳的音频数据进行解码。
本发明还提供一种实现上述方法的移动终端,其所述移动终端包括:
协议栈模块,用于在可视电话通话开始后,将收到的视频数据和音频数据分别发送给本地的视频解码器和音频解码器;
视频解码器,用于将收到的所述视频数据进行缓冲,并获取待解码的视频数据的时间戳发送给所述音频解码器,所述视频解码器再对所述待解码的视频数据进行解码;
音频解码器,用于将收到的所述音频数据进行缓冲,并获取被缓冲的音频数据的时间戳,在收到所述待解码的视频数据的时间戳后,将具有相同时间戳的音频数据进行解码。
上述移动终端,其所述视频解码器中包括一时间戳监控模块,用于获取待解码的视频数据的时间戳发送给所述音频解码器;和/或
所述音频解码器中包括一音频解码控制模块,用于获取被缓冲的音频数据的时间戳,并在收到所述待解码的视频数据的时间戳后,通知所述音频解码器将具有相同时间戳的音频数据进行解码。
上述移动终端,其所述移动终端还包括:
音/视频同步模式设置模块,用于在所述移动终端上设置音/视频同步模式。
本发明移动终端的视频解码器将收到的视频数据进行缓冲,并获取待解码的视频数据的时间戳发送给音频解码器后,所述视频解码器才进行解码;本发明移动终端的音频解码器将收到的音频数据进行缓冲并获取该音频数据的时间戳,在收到待解码的视频数据的时间戳后,将具有相同时间戳的音频数据进行解码。借此,本发明基本上实现了在可视电话中同时进行音视/频数据解码,进而改善了音频和视频的同步性能。
【附图说明】
图1是本发明移动终端的结构示意图;
图2是本发明可视电话的实现方法的流程图;
图3是本发明实现方法中音/视频同步模式设置步骤的流程图;
图4是本发明实现方法中视频解码器的工作流程图;
图5是本发明实现方法中音频解码器的工作流程图。
【具体实施方式】
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1示出了本发明移动终端的结构,所述移动终端100优选为3G手机,除了包括基本的屏幕、摄像头等设备之外,所述移动终端100至少还包括有协议栈模块10、视频解码器30以及音频解码器40,其中:
协议栈模块10,用于在可视电话通话开始后,将收到的视频数据和音频数据分别发送给本地的视频解码器30和音频解码器40。优选的是,所述协议栈模块10收到网络侧的通信对端200发来(以射频方式)的音/视频数据后,检查所述音/视频数据中的时间戳,根据音/视频数据中携带的时间戳属性进行音频数据和视频数据分离,把具有相同时间戳的视频数据和音频数据分开,分离出来的每个音频数据和视频数据也带有时间戳,并将所述视频数据和音频数据分别发送给视频解码器30和音频解码器40,所述协议栈模块10优选采用H324M协议栈。
视频解码器30,用于将收到的所述视频数据进行缓冲,并获取待解码的视频数据的时间戳发送给音频解码器40,所述视频解码器30再对待解码的视频数据进行解码,一般按先到先解的顺序进行视频解码。由于视频数据的解码起点时间总是慢于音频数据的解码起点时间,因此在视频数据解码前发时间戳消息通知音频解码器40,音频解码40收到该时间戳消息后才进行音频解码,从而基本上同步音/视频数据解码时间,由于移动终端内的消息传递速度是很快,消息耗费时间一般是10~50毫秒,基本可以忽略。
所述视频解码器30中还可包括一时间戳监控模块31,该时间戳监控模块31用于获取待解码的视频数据的时间戳发送给音频解码器40,优选通过H263协议的数据包格式,获取所述待解码的视频数据的时间戳,并把它以消息形式发送到音频解码器40,以供音频解码器40同步解码时间。
音频解码器40,用于将收到的所述音频数据进行缓冲,并获取被缓冲的音频数据的时间戳,在收到所述待解码的视频数据的时间戳后,将具有相同时间戳的音频数据进行解码,音频解码器40收到所述时间戳消息后再解码,这样基本上达到了音/视频解码的同时进行,即改善了音频和视频的同步性能。
优选的是,音频解码器40收到音频数据后,建立至少一缓冲区来存放音频数据,并获取缓冲区中的音频数据的时间戳,在收到所述待解码的视频数据的时间戳后,检索所述缓冲区中音频数据的时间戳,将与待解码的视频数据具有相同时间戳的音频数据进行解码,一般按先到先解的顺序进行音频解码。所述音频解码器40中还可包括一音频解码控制模块41,该音频解码控制模块41用于获取被缓冲的音频数据的时间戳,并在收到待解码的视频数据的时间戳后,通知音频解码器40将具有相同时间戳的音频数据进行解码。
移动终端100还可包括音/视频同步模式设置模块20,该音/视频同步模式设置模块20用于在移动终端100上设置音/视频同步模式。具体而言,用户通过可视界面的上层菜单,来选择进入音/视频同步模式设置模块20进行设置,可以选择是否开启或者关闭音/视频同步模式功能。所述移动终端100将音/视频同步模式的设置项存储到本地数据库中;在视频解码器30对视频数据进行解码之前,移动终端100检查本地数据库中的设置项,若设置了音/视频同步模式则执行音/视频同步通话程序。
本发明通过检测音频解码器和视频解码器的当前解码状态,控制音频/视频解码的解码时间,让具有相同的时间戳的音/视频同步播放,从而改善音频和视频的同步性能,两者延迟由原来的1~2秒左右缩短到0.4秒以内。
图2示出了本发明可视电话的实现方法的流程,其通过图1所示的移动终端100实现,具体包括步骤有:
步骤S201,可视电话通话开始,移动终端100将收到的视频数据和音频数据分别发送给本地的视频解码器30和音频解码器40。优选的是,所述移动终端100的H324M协议栈收到网络侧发来的音/视频数据后,检查所述音/视频数据中的时间戳,把具有相同时间戳的视频数据和音频数据分开,并将所述视频数据和音频数据分别发送给视频解码器30和音频解码器40。
步骤S202,视频解码器30将收到的视频数据进行缓冲,并获取待解码的视频数据的时间戳发送给音频解码器40,优选通过H263协议获取待解码的视频数据的时间戳,所述视频解码器30再对所述待解码的视频数据进行解码。
步骤S203,音频解码器40将收到的音频数据进行缓冲,并获取被缓冲的音频数据的时间戳,在收到所述待解码的视频数据的时间戳后,将具有相同时间戳的音频数据进行解码。音频解码器40轮询并接收来自视频解码器30的时间戳监控模块31发过来的待解码的视频数据的时间戳消息,根据该消息携带的时间戳信息,来检索本地音频数据的时间戳,将具有相同时间戳的音频数据进行解码。
优选的是,上述步骤S201之前还可包括音/视频同步模式设置步骤,如图图3所示,包括如下步骤:
步骤S301,用户通过移动终端100进行音/视频同步模式设置。用户通过可视界面的上层菜单,来选择进入音/视频同步模式设置模块20进行设置,可以选择是否开启或者关闭音/视频同步模式功能。
步骤S302,判断用户是否设置了音/视频同步模式,若是则执行步骤S303,否则结束流程。
步骤S303,所述移动终端100设置所述音/视频同步模式后,将所述音/视频同步模式的设置项存储到本地数据库中。以后可视电话启动时,所述移动终端100将检查本地数据库中的设置项,若设置了所述音/视频同步模式则执行音/视频同步通话程序。
图4示出了本发明实现方法中视频解码器的工作流程,其包括如下步骤:
步骤S401,可视电话通话开始,移动终端100和通信对端200进行双方的可视电通话。
步骤S402,视频解码器30将从H324M协议栈收到的视频数据进行缓冲。
步骤S403,视频解码器30的时间戳监控模块31获取待解码的视频数据的时间戳,优选通过H263协议获取待解码的视频数据的时间戳。
步骤S404,视频解码器30的时间戳监控模块31发送时间戳消息给音频解码器40,该时间戳消息中包括待解码的视频数据的时间戳。
步骤S405,视频解码器30开始对该待解码的视频数据进行解码。之后,本地视频设备即可播放视频数据,显示图像。
图5是示出了发明实现方法中音频解码器的工作流程,其包括如下步骤:
步骤S501,移动终端100和通信对端200开始可视电话通话。
步骤S502,音频解码器40从H324M协议栈处收到音频数据。
步骤S503,音频解码器40建立至缓冲区来存放所述音频数据。
步骤S504,音频解码器40的音频解码控制模块41获取被缓冲的音频数据的时间戳。
步骤S505,音频解码器40的音频解码控制模块41判断是否收到视频解码器30发来的视频数据的时间戳消息,若是则执行步骤S506,否则继续等待。
步骤S506,音频解码器40的音频解码控制模块41检索所述缓冲区中音频数据的时间戳,找到具有相同的时间戳的音频数据后,通知所述音频解码器40进行解码。
步骤S507,音频解码器40将具有相同时间戳的音频数据进行解码。之后,本地音频设备即可播放音频数据,从而具有相同时间戳的视频数据和音频数据得到同步播放的效果。
综上所述,本发明移动终端的视频解码器将收到的视频数据进行缓冲,并获取待解码的视频数据的时间戳发送给音频解码器后,所述视频解码器才进行解码;本发明移动终端的音频解码器将收到的音频数据进行缓冲并获取该音频数据的时间戳,在收到待解码的视频数据的时间戳后,将具有相同时间戳的音频数据进行解码。借此,本发明基本上实现了在可视电话中同时进行音视/频数据解码,进而改善了音频和视频的同步性能。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。