用于网页播放媒体流的回声消除的方法、装置及设备与流程

文档序号:26057590发布日期:2021-07-27 15:36阅读:399来源:国知局
用于网页播放媒体流的回声消除的方法、装置及设备与流程

本申请涉及网络多媒体处理技术领域,尤其涉及一种用于网页播放媒体流的回声消除的技术。



背景技术:

随着网络传输速度的提升,以及上网成本的下降,网络带宽和流量对于网络视频的限制已经不那么明显,包括通过网络实现音视频互动等的互联网视频应用已经成为人们日常工作和生活中的一部分。

在通过网络实现音视频互动过程中,不可避免会产生回声。通常各种在线互动的应用或浏览器中会采用aec(automaticechocancellation,自动回声消除)技术,以该在线互动的应用或网页发送至扬声器播放的音频数据为依据,根据所处环境的回声路径特征,模拟出回声数据,从麦克风采集到的音频数据中滤除模拟出的回声数据,以实现回声消除。aec技术的原理如图1所示。

然而在一些音视频互动的应用场景中,比如,在本地打开一个网页播放媒体流的同时在另一个网页上与他人进行在线互动聊天,本地网页播放媒体流的声音若不是通过耳机而是通过扬声器播放,则会被本地麦克风采集到,这也是一种回声。对于某些浏览器来说,比如chrome,由于该声音不是在线互动聊天中产生的,不是通过在线互动聊天网页播放到扬声器的音频数据,无法通过浏览器的aec功能消除,当进行在线互动聊天时会和本地聊天声音一起通过网络传输给远端。同样地,若远端设备其它网页播放的声音也是通过扬声器而不是耳机播放,则当在另一个网页上进行在线互动聊天时,其麦克风也会采集到该声音,无法通过其浏览器的aec功能将其作为回声加以消除,而是通过网络传输至本地。使得此类在线交互应用场景下的用户体验不佳。



技术实现要素:

本申请的目的是提供一种用于网页播放媒体流的回声消除的方法、装置及设备,用以解决一些在线交互应用场景下的回声消除的技术问题。

根据本申请的一个方面,提供了一种用于网页播放媒体流的回声消除的方法,其中,所述方法包括:

获取所述媒体流中的音频数据;

创建循环脚本,在所述循环脚本中包含近端对象和远端对象,其中,所述近端对象用于获取所述音频数据,所述远端对象用于监听所述近端对象的状态;

创建媒体流,当所述远端对象监听到所述近端对象发送所述音频数据,则从所述近端对象获取所述音频数据,并构建所述媒体流的音频流;

创建音频元素,将所述媒体流确定为所述音频元素的源内容,以实现所述网页播放媒体流的本地播放及回声消除。

可选地,其中,所述获取所述媒体流中的音频数据包括:

基于获取的所述媒体流,获取音频流;

基于所述音频流,获取所述音频数据。

可选地,其中,所述基于所述音频流,获取所述音频数据包括:

基于音频解码器,将所述音频流解码成所述音频数据。

可选地,其中,所述创建音频元素,将所述媒体流确定为所述音频元素的源内容,以实现所述网页播放媒体流的本地播放及回声消除包括:

创建音频元素,将所述媒体流确定为所述音频元素的源内容,以实现本地播放;

基于浏览器的回声消除功能,确定所述远端对象获取的音频数据对应的回声参考音频数据;

从本地收录的音频数据中删除所述回声参考音频数据,以实现所述网页播放媒体流的回声消除。

可选地,其中,所述获取所述媒体流中的音频数据还包括:获取所述媒体流中的视频数据,并同步所述视频数据及所述音频数据;

其中,所述方法还包括:

将所述视频数据发送至显示源,以实现与所述音频数据本地同步播放。

可选地,其中,所述获取所述媒体流中的视频数据包括:

基于获取的所述媒体流,获取视频流;

基于所述视频流,获取所述视频数据。

可选地,所述所述基于所述视频流,获取所述视频数据包括:

基于视频解码器,将所述视频流解码成所述视频数据。

根据本申请的另一方面,还提供了一种用于网页播放媒体流的回声消除的装置,其中,所述装置包括:

第一模块,用于获取所述媒体流中的音频数据;

第二模块,用于创建循环脚本,在所述循环脚本中包含近端对象和远端对象,其中,所述近端对象用于获取所述音频数据,所述远端对象用于监听所述近端对象的状态;

第三模块,用于创建媒体流,当所述远端对象监听到所述近端对象发送所述音频数据,从所述近端对象获取所述音频数据,并构建所述媒体流的音频流;

第四模块,用于创建音频元素,将所述媒体流确定为所述音频元素的源内容,以实现所述网页播放媒体流的本地播放及回声消除。

可选地,其中,所述第一模块还包括:

用于获取所述媒体流中的视频数据,并同步所述视频数据及所述音频数据;

其中,所述装置还包括:

第五模块,用于将所述视频数据发送至显示源,以实现与所述音频数据本地同步播放。

与现有技术相比,本申请通过一种用于网页播放媒体流的回声消除的方法、装置及设备,首先获取所述媒体流中的音频数据,接着创建循环脚本,在所述循环脚本中包含近端对象和远端对象,其中,所述近端对象用于获取所述音频数据,所述远端对象用于监听所述近端对象的状态,然后创建媒体流,当所述远端对象监听到所述近端对象发送所述音频数据,从所述近端对象获取所述音频数据,并构建所述媒体流的音频流,最后创建音频元素,将所述媒体流确定为所述音频元素的源内容,以实现所述网页播放媒体流的本地播放及回声消除。通过该方法,可消除本地音频播放源,如扬声器,播放的网页媒体流所产生的回声,使得网页播放媒体流的声音不会被传输至远端,大大提升了一些网络交互应用场景下的用户体验。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1示出aec自动回声消除技术的原理图;

图2示出根据本申请一个方面的一种用于网页播放媒体流的回声消除的方法流程图;

图3示出根据本申请一个方面的一种用于网页播放媒体流的回声消除装置示意图;

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

下面结合附图对本发明作进一步详细描述。

在本申请一个典型的配置中,系统各模块和可信方均包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

为更进一步阐述本申请所采取的技术手段及取得的效果,下面结合附图及优选实施例,对本申请的技术方案,进行清楚和完整的描述。

图2示出本申请一个方面的一种用于网页播放媒体流的回声消除的方法流程图,其中,一个实施例的方法包括:

s21获取所述媒体流中的音频数据;

s22创建循环脚本,在所述循环脚本中包含近端对象和远端对象,其中,所述近端对象用于获取所述音频数据,所述远端对象用于监听所述近端对象的状态;

s23创建媒体流,当所述远端对象监听到所述近端对象发送所述音频数据,从所述近端对象获取所述音频数据,并构建所述媒体流的音频流;

s24创建音频元素,将所述媒体流确定为所述音频元素的源内容,以实现所述网页播放媒体流的本地播放及回声消除。

在本申请中,所述方法通过设备1执行,所述设备1为集成了支持aec技术的浏览器的计算机设备和/或云,具有aec功能。其中,所述计算机设备包括但不限于智能手机、平板电脑、pad、个人计算机、笔记本电脑、工业计算机、网络主机、单个网络服务器、多个网络服务器集;所述云由基于云计算(cloudcomputing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟超级计算机。

在此,所述计算机设备和/或云仅为举例,其他现有的或者今后可能出现的设备和/或资源共享平台如适用于本申请也应包含在本申请的保护范围内,在此,以引用的方式包含于此。

在该实施例中,设备1通过具有aec功能的浏览器网页播放媒体流,同时通过其它网页与远端设备2进行在线音频或音视频互动,其中,设备2也是集成了具有aec功能的浏览器的计算机设备和/或云。比如,在该实施例的一个应用场景中,设备1集成了具有aec功能的chrome浏览器,用户a使用设备1,打开chrome浏览器的一个html5标签页a播放在线音乐或其它媒体流,通过设备1的扬声器或与设备1电连接的其它扬声设备播放,同时,在另一个html5标签页b中与使用设备2的用户b进行在线互动聊天,采用所述方法,利用chrome浏览器本身的aec功能将html5标签页a中的媒体流中的声音通过本地音频播放源,如扬声器,播放出来所产生的回声进行消除,避免该声音被传送至设备2。

在所述步骤s21中,设备1获取网页播放媒体流中的音频数据。比如,在上述应用场景中,设备1获取chrome浏览器html5标签页a播放媒体流中的音频数据。

可选地,其中,所述步骤s21包括:

基于获取的所述媒体流,获取音频流;

基于所述音频流,获取所述音频数据。

其中,设备1获取到媒体流,比如hls/dash、mp4或者flv格式的媒体流,然后将媒体流解封装,获得其中的音频流,再基于音频流,获取音频数据。

可选地,其中,所述基于所述音频流,获取所述音频数据包括:

基于音频解码器,将所述音频流解码成所述音频数据。

其中,通过音频解码器,比如采用多线程解码、高解码效率的webassembly音频解码器,将音频流解码成音频数据,该音频数据通常是标准数字音频数据,即pcm(pulsecodemodulation,脉冲编码调制)音频数据,是未经压缩的音频采样数据裸流。

继续在该实施例中,在所述步骤s22中,在设备1中增加一个循环脚本,在该循环脚本中包含近端对象和远端对象,其中,所述近端对象用于获取所述音频数据,所述远端对象用于监听所述近端对象的状态。

比如,继续在上述应用场景中,原来标签页a在播放媒体流时,是将其中的音频流解封装出来,解码成音频数据后直接发送至audiodestinationnode节点,通过本地音频播放源,如扬声器,播放。在该实施例中,可以在设备1中增加一个webrtc循环脚本,利用浏览器本身的aec功能消除回声。例如,在设备1的chrome浏览器html5标签页a的网页脚本中增加一个webrtc循环,在该webrtc循环中配置两个rtcpeerconnection对象,分别作为近端rtcpeerconnection对象和远端rtcpeerconnection对象。在步骤s21中获取的音频数据先存放在一个中间节点,比如mediastreamaudiodestinationnode节点,然后通过近端rtcpeerconnection对象从中间节点获取到音频数据,以将标签页a播放媒体流的声音纳入webrtc循环,通过远端rtcpeerconnection对象来监听近端rtcpeerconnection对象的数据收发状态。

也可以采用其它支持aec功能的api在网页脚本中增加相关内容,以实现上述功能。在此,不作限定。

继续在所述实施例中,在所述步骤s23中,设备1创建一个新的媒体流,当步骤s22中的远端对象监听到近端对象发送音频数据时,从所述近端对象获取所述音频数据,并将该音频数据构建为该媒体流的音频流。比如,继续在上述应用场景中,可以在设备1的浏览器html5标签页a的网页脚本中创建一个媒体流,当远端rtcpeerconnection对象监听到近端rtcpeerconnection对象发送过来的音频数据后,则从所述近端rtcpeerconnection对象获取该音频数据,以用于基于浏览器的回声消除功能,确定对应的回声参考音频数据,并将该音频数据编码封装后作为该媒体流的音频流,以构建该媒体流的音频流。

继续在所述实施例中,在所述步骤s24中,设备1创建网页新的音频元素,将创建的媒体流作为该音频元素的源内容,,从而实现该网页播放媒体流的本地播放及回声消除。比如,继续在上述应用场景中,可以在设备1的chrome浏览器html5标签页a的网页脚本中创建一个<audio>音频元素,将步骤s23中的媒体流作为该<audio>音频元素的srcobject属性,实现本地播放,同时利用chrome浏览器本身的aec功能,确定标签页a播放媒体流的声音的回声参考音频数据,实现将本地播放的标签页a的声音从本地收录的声音中作回声消除,不会被传送至远端用户b。

可选地,其中,所述步骤s24包括:

创建音频元素,将所述音频流确定为所述音频元素的源内容,以实现本地播放;

基于浏览器的回声消除功能,确定所述远端对象获取的音频数据对应的回声参考音频数据;

从本地收录的音频数据中删除所述回声参考音频数据,以实现所述网页播放媒体流的回声消除。

比如,继续在上述应用场景中,在设备1的chrome浏览器html5标签页a的网页脚本中创建一个音频元素,将步骤s23中的媒体流作为该音频元素的音频源内容,以实现本地音频播放源,如扬声器,播放,被本地声音收录设备,比如麦克风收录后,设备1收到的远端音频数据包含两部分:基于所述远端对象获取的标签页a播放媒体流的音频数据,以及标签页b收到的包含远端用户b声音的音频数据,chrome浏览器基于其本身的回声消除功能,会以远端音频数据为依据,模拟出回声参考音频数据,从设备1的麦克风采集的音频数据中删除回声参考音频数据,使得不但标签页b中包含的远端用户b的声音不会被传送至远端用户b,标签页a中播放媒体流的声音也不会被传送至远端用户b。即用户a在设备1上一边用标签页a播放媒体流,一边用标签页b与远端用户b在线互动聊天时,即使不用耳机,标签页a播放媒体流的声音虽然会被麦克风采集到,但会作为回声被消除,不会被传送至远端用户b,实现标签页a播放媒体流的本地播放及回声消除。

可选地,当所述媒体流还包括视频流时,所述步骤s21还包括:

获取所述媒体流中的视频数据,并同步所述视频数据及所述音频数据;

其中,所述方法还包括:

将所述视频数据发送至显示源,以实现与所述音频数据本地同步播放。

比如,在上述实施例的另一个应用场景中,设备1集成了具有aec功能的chrome浏览器,用户a使用设备1,打开chrome浏览器的一个html5标签页a播放在线电影或进行在线视频会议,通过设备1的本地音频播放源,如扬声器或与设备1电连接的其它扬声设备,播放声音,同时,在另一个html5标签页b中与使用设备2的用户b进行在线互动聊天。设备1会获取chrome浏览器html5标签页a播放媒体流中的音频数据和视频数据,并同步所述视频数据及所述音频数据,然后将视频数据发送至设备1的显示器或与设备1电连接的其它显示设备,将音频数据发送至设备1的本地音频播放源,如扬声器或与设备1电连接的其它扬声设备,以实现本地同步播放。

进一步地,在本申请的另一个实施例中,有若干个网页在播放媒体流,则在每一个网页中创建相应的所述循环脚本、媒体流及音频元素,将每个网页播放媒体流的音频数据纳入webrtc循环,基于每个网页播放媒体流的音频数据构建该网页新创建的媒体流的音频流,作为该网页新创建的音频元素的源内容,在本地播放后被本地声音收录设备,如麦克风,收录后每个网页播放媒体流的声音都会被当做回声被消除,以实现每个网页播放媒体流的本地播放及回声消除,提升在线交互的用户体验。

可选地,其中,所述获取所述媒体流中的视频数据包括:

基于获取的所述媒体流,获取视频流;

基于所述视频流,获取所述视频数据。

其中,设备1获取到媒体流,比如hls/dash、mp4或者flv格式的媒体流,然后将媒体流解封装,获得其中的音频流和视频流,再基于音频流和视频流,获取音频数据和视频数据。

可选地,其中,所述基于所述视频流,获取所述视频数据包括:

基于视频解码器,将所述视频流解码成所述视频数据。

其中,通过音频解码器和视频解码器,比如采用多线程解码、高解码效率的webassembly音频解码器和视频解码器,将音频流解码成音频数据,通常是标准数字音频数据,即pcm音频数据,将视频流解码成视频数据,通常是yuv帧格式的视频数据。

图3示出根据本申请另一个方面的一种用于网页播放媒体流的回声消除的装置示意图,其中,一个实施例的所述装置包括:

第一模块31,用于获取所述媒体流中的音频数据;

第二模块32,用于创建循环脚本,在所述循环脚本中包含近端对象和远端对象,其中,所述近端对象用于获取所述音频数据,所述远端对象用于监听所述近端对象的状态;

第三模块33,用于创建媒体流,当所述远端对象监听到所述近端对象发送所述音频数据,从所述近端对象获取所述音频数据,并构建所述媒体流的音频流;

第四模块34,用于创建音频元素,将所述媒体流确定为所述音频元素的源内容,以实现所述网页播放媒体流的本地播放及回声消除。

其中,所述装置集成在设备中,所述设备与上述设备1相同。

比如,在一个应用场景中,所述设备是集成了chrome浏览器的计算机设备,用户a使用设备1,打开chrome浏览器的一个html5标签页a播放在线音乐或其它媒体流,通过设备1的扬声器或与设备1电连接的其它扬声设备播放,同时,在另一个html5标签页b中与使用设备2的用户b进行在线互动聊天。采用前述方法,该装置的第一模块31获取chrome浏览器html5标签页a播放媒体流中的音频数据;该装置的第二模块32在chrome浏览器html5标签页a的网页脚本中创建webrtc循环,在该webrtc循环中配置两个rtcpeerconnection对象,分别作为近端rtcpeerconnection对象和远端rtcpeerconnection对象,将第一模块31获取的音频数据先保存在一个中间节点,比如mediastreamaudiodestinationnode节点,然后通过近端rtcpeerconnection对象从中间节点获取到音频数据,通过远端rtcpeerconnection对象来监听近端rtcpeerconnection对象的状态;该装置的第三模块33创建一个新的媒体流,当第二模块32创建的webrtc循环中的远端rtcpeerconnection对象监听到近端rtcpeerconnection对象从mediastreamaudiodestinationnode节点获取到音频数据后发送该音频数据,从所述近端rtcpeerconnection对象获取该音频数据,并构建该媒体流的音频流,以作为远端音频数据一部分;该装置的第四模块34为chrome浏览器html5标签页a创建一个<audio>音频元素,将第三模块33创建的媒体流作为该<audio>音频元素的srcobject属性,以作为本地音频播放源的内容实现本地播放,被本地声音收录设备,如麦克风,收录后,利用chrome浏览器的aec功能,确定第三模块33中远端rtcpeerconnection对象获取的音频数据对应的回声参考音频数据,从本地收录的音频数据中删除该回声参考音频数据,以实现标签页a播放媒体流的声音回声消除,不会被传送至远端用户b。

可选地,其中,若网页播放媒体流还包含视频数据,则所述第一模块31还用于获取所述媒体流中的视频数据,并同步所述视频数据及所述音频数据,所述装置还包括:

第五模块35,用于所述视频数据发送至显示源,以实现与所述音频数据本地同步播放。

比如,在上述实施例的另一个应用场景中,设备1集成了具有aec功能的chrome浏览器,用户a使用设备1,打开chrome浏览器的一个html5标签页a播放在线电影或进行在线视频会议,通过设备1的扬声器或与设备1电连接的其它扬声设备播放声音,同时,在另一个html5标签页b中与使用设备2的用户b进行在线互动聊天,则设备1的chrome浏览器标签页a播放媒体流包含音频数据和视频数据。所述装置的第一模块31除了获取chrome浏览器html5标签页a播放媒体流中的音频数据,还获取媒体流中的视频数据,并同步所述视频数据及所述音频数据,然后通过该装置的第五模块35,将视频数据发送至设备1的显示器或与设备1电连接的其它显示设备,将音频数据发送至设备1的扬声器或与设备1电连接的其它扬声设备,以实现在本地的同步播放。

根据本申请的又一方面,还提供了一种计算机可读介质,所述计算机可读介质存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现前述方法。

根据本申请的又一方面,还提供了一种用于网页播放媒体流的回声消除的设备,其中,该设备包括:

一个或多个处理器;以及

存储有计算机可读指令的存储器,所述计算机可读指令在被执行时使所述处理器执行如前述方法的操作。

例如,计算机可读指令在被执行时使所述一个或多个处理器:获取所述媒体流中的音频数据;创建循环脚本,在所述循环脚本中包含近端对象和远端对象,其中,所述近端对象用于获取所述音频数据,所述远端对象用于监听所述近端对象的状态;创建媒体流,当所述远端对象监听到所述近端对象发送所述音频数据,从所述近端对象获取所述音频数据,并构建所述媒体流的音频流;创建音频元素,将所述媒体流确定为所述音频元素的源内容,以实现所述网页播放媒体流的本地播放及回声消除。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

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