一种Android系统服务端、远程桌面音频重定向方法及系统与流程

文档序号:11710043阅读:808来源:国知局
一种Android系统服务端、远程桌面音频重定向方法及系统与流程

本发明涉及通信技术领域,尤其涉及一种android系统服务端、远程桌面音频重定向方法及系统。



背景技术:

传统的远程桌面技术主要是基于windows、linux、macos等pc操作系统。然而,随着智能移动设备的大规模应用和企业移动办公的普及,基于移动操作系统如android系统的远程桌面有了越来越多的市场需求。相对于传统的远程桌面,基于android系统的远程桌面给用户交付的是整个android桌面,并且具有音频、摄像头等硬件设备的重定向功能。

在android系统中,音频是一项非常重要的基础功能,所以在android远程桌面环境中,实现音频重定向的功能对提高远程桌面产品的用户体验至关重要,其中音频重定向又可以细分为:音频播放重定向和麦克风录音重定向。音频播放重定向是指将远程桌面服务端android系统中音频回放时产生的音频数据通过远程桌面服务端软件发送到远程桌面客户端上进行播放;麦克风录音重定向则是将远程桌面客户端麦克风设备上采集到的录音音频数据通过远程桌面客户端软件发送到远程桌面服务端中,然后供上层的录音应用程序所使用。

现有比较成熟的远程桌面技术方案,例如microsoft的rdp,citrix的ica和teamviewer,这些技术方案中远程桌面服务端使用的基本都是windows、linux、macos等pc操作系统,并且它们的音频重定向的技术主要通过调用远程桌面服务端操作系统现有所提供的api接口实现。

windows系统中基于rdp协议的音频重定向方案:当rdp客户端通过网络连接到远程主机上之后,远程服务端主机上的音频驱动程序就会被切换成一个microsoftrdp音频驱动程序(microsoftrdpaudiodriver)。对于音频播放重定向,这个驱动的工作就是负责接管远程计算机上正在播放的音频,把它压缩之后通过网络传递到远程客户端,然后rdp客户端把这个音频网络流发送到本地声卡上输出;对于麦克风录音重定向,这个驱动的工作就是截获到麦克风设备所需要采集音频的相关参数信息通过网络发送给rdp客户端,然后rdp客户端将客户端本地麦克风设备上采集到的指定格式的录音数据通过网络发送到rdp服务端,最后rdp服务端将收到的这些数据传入到microsoftrdp音频驱动程序中,提供给上层获取录音数据的应用程序使用。但是,该方案适用于windows操作系统,不适用于android操作系统,且音频播放数据的截取和录音数据的导入完全不同。此外,windows系统中远程桌面技术中所使用rdp协议是闭源的,其他人无法借鉴rdp协议中有关音频重定向的相关实现。

ubuntu系统基于pulseaudio系统服务的音频重定向方案:对于音频播放重定向,当服务端有应用程序播放音乐时,服务端远程桌面应用程序就将从pulseaudio系统服务中获取到当前系统混音好的音频数据,然后通过网络发送到远程桌面客户端,最后在远程桌面客户端的声卡设备上进行播放。对于麦克风录音重定向,服务端远程桌面应用程序监听系统服务中的录音事件消息,然后在监听到启动录音事件消息时,从pulseaudio系统服务中获取录音的相关参数信息并通过网络发送到远程桌面客户端,最后接收来自远程客户端本地麦克风设备所采集的录音音频数据,并将这些数据写入到pulseaudio系统服务的网络录音接口中,供上层的应用程序获取录音音频数据。但是,该方案适用于ubuntu操作系统,不适用于android操作系统,虽然这两个操作系统底层都是基于linux内核,但是它们所使用的音频框架并不相同,ubuntu系统所使用的pulseaudio,而android系统使用的audioflinger,因此,这两种系统的音频重定向方案肯定不同。

综上,上述方案在基于android系统的远程桌面音频重定向场景中并不适用,主要是因为android系统中并没有提供截取系统音频播放数据和注入录音采集音频数据的系统api接口提供给上层应用程序调用。



技术实现要素:

在基于android系统的远程桌面环境中,为解决服务端的音频播放的数据重定向到客户端进行播放和客户端麦克风设备采集的录音数据重定向到服务端使用的音频重定向问题,本发明提供了一种android系统服务端、远程桌面音频重定向方法及系统,实现了音频播放重定向和麦克风录音重定向两种功能,满足远程桌面环境下的音频需求。

本发明第一方面提供一种android系统服务端,包括:应用层、系统框架层以及硬件抽象层,其中:

所述的应用层包括音乐播放应用模块与录音应用模块,其中,所述的音乐播放应用模块用于音乐的播放,所述的录音应用模块用于音频的录制;

所述的系统框架层包括audiofinger进程和远程桌面服务端,其中,所示的audiofinger进程用于对音乐文件进行解码混音处理,并将处理好的音频播放数据传送至硬件抽象层的音频硬件抽象层模块,或从硬件抽象层的音频硬件抽象层模块中获取麦克风采集到的音频数据,并向上传送到应用层的录音应用中;所述的远程桌面服务端用于将音频播放数据传送至远程桌面客户端、接收远程桌面客户端麦克风设备采集的录音数据以及对录音控制消息传送至远程桌面客户端;

所述的硬件抽象层包括音频硬件抽象层模块,所述的音频硬件抽象层模块用于对音频播放数据、录音采集数据、录音控制消息进行处理,并通过匿名共享内存的方式与系统框架层的远程桌面服务端进行进程间通信。

所述的audiofinger进程包括:

系统音频播放组件,用于对音乐文件进行解码混音处理,并将处理好的音频播放数据传送至硬件抽象层的音频硬件抽象层模块;

系统录音采集组件,用于从硬件抽象层的音频硬件抽象层模块中获取麦克风采集到的音频数据,并向上传送到应用层的录音应用中。

所述的音频硬件抽象层模块包括:

音频播放数据截取模块,用于从系统硬件抽象层中写入声卡驱动的函数接口截取到音频播放数据,并将该音频播放数据经第一匿名共享内存传送至远程桌面服务端;

第一匿名共享内存,是音频播放数据截取模块与远程桌面服务端中的音频播放重定向代理模块共享的内存,用于存储音频播放数据;

录音控制消息捕获模块,用于捕获系统硬件抽象层中的录音控制消息,并将录音控制消息经第二匿名共享内存传递至远程桌面服务端;

第二匿名共享内存,是录音控制消息捕获模块与远程桌面服务端中的录音控制消息代理模块共享的内存,用于存储录音控制消息;

录音采集数据导入模块,用于将远程桌面服务端接收的录音采集数据经第三匿名共享内存导入至系统硬件抽象层的录音数据声卡驱动读取函数接口中;

第三匿名共享内存,是录音数据导入模块与远程桌面服务端中的录音重定向代理模块共享的内存,用于存储录音数据。

所述的远程桌面服务端包括:

第一通信模块,用于远程桌面服务端与远程桌面客户端之间的网络通信;

音频播放重定向代理模块,用于将远程桌面服务端解码的音频播放数据传送至远程桌面客户端;

录音控制消息代理模块,用于将录音控制消息传送至远程桌面客户端;

录音重定向代理模块,用于接收远程桌面客户端麦克风设备采集的录音数据。

本发明第二方面提供了一种基于android系统远程桌面的音频重定向系统,包括:本发明第一方面提供的android系统服务端和远程桌面客户端,其中,所述的远程桌面客户端包括:

第二通信模块,用于远程桌面客户端与远程桌面服务端之间的网络通信;

音频播放重定向处理模块,用于将远程桌面服务端发送的音频播放数据于远程桌面客户端本地的声卡上播放;

录音控制消息处理模块,用于解析从远程桌面服务端发送的录音控制消息,并控制录音重定向处理模块是否发送麦克风设备采集的录音数据;

录音重定向处理模块,用于根据录音控制消息处理模块发送的麦克风录音采集参数来采集录音数据,并将录音数据发送到远程桌面服务端。

所述的录音控制消息包括:录音启动消息、录音暂停消息以及录音采集相关参数消息。

所述的录音采集相关参数消息包括:录音采集所需的采样率、采样通道数以及采样深度参数信息。

本发明第三方面提供了一种基于android系统远程桌面的音频重定向方法,具体包括:

音频播放重定向,音乐文件经audioflinger解码混音处理得到预处理音频数据,将预处理音频数据传送至音频硬件抽象层模块进行处理,得到音频播放数据,并将该音频播放数据传送至远程桌面服务端进行处理,远程桌面服务端将处理后的音频播放数据传送至远程桌面客户端,进行音频播放,完成音频播放重定向;

录音重定向,录音请求经audioflinger进程处理得到预处理录音请求,将预处理录音请求传送至音频硬件抽象层模块进行处理,得到录音控制消息,并将该录音控制消息传送至远程桌面服务端进行处理,远程桌面服务端将处理后的录音控制消息传送至远程桌面客户端,远程桌面客户端根据录音控制消息进行录音操作,得到录音数据,远程桌面客户端再将录音数据经远程桌面服务端处理后传送至音频硬件抽象层模块,进行录音数据的导入,完成录音重定向。

所述的音频播放重定向具体包括以下步骤:

(a-1)音乐播放应用开始播放音乐,音乐文件经audioflinger进程中的系统音频播放组件解码混音处理后,得到预处理音频数据,并将该预处理音频数据传送至音频硬件抽象层模块中的音频播放数据截取模块;

(a-2)音频播放数据截取模块截取预处理音频数据中的音频播放数据,并将该音频播放数据存放于音频播放数据截取模块与远程桌面服务端中的音频播放重定向代理模块共享的第一匿名共享内存中;

(a-3)音频播放重定向代理模块不断地从第一匿名共享内存中读取音频播放数据,并通过第一通信模块将音频播放数据发送到远程桌面客户端;

(a-4)远程桌面客户端将通过第二通信模块接收的音频播放数据传送至音频播放重定向处理模块,并使用远程桌面客户端本地音频播放系统进行处理;

(a-5)音频播放重定向处理模块将处理后的音频播放数据于本地声卡设备上播放出来,实现音频播放重定向。

所述的录音重定向具体包括以下步骤:

(b-1)录音应用开始录制音频,audioflinger进程中的系统录音采集组件对录音启动请求进行录音采集初始化处理,得到预处理录音启动请求,并将该预处理录音启动请求传送至音频硬件抽象层模块中的录音控制消息捕获模块;

(b-2)录音控制消息捕获模块通过轮询线程捕获到预处理录音启动请求,进行录音采集相关参数初始化处理,得到录音启动信息和录音采集相关参数信息,并将录音采集相关参数信息与录音启动信息存放于录音控制消息捕获模块与远程桌面服务端中的录音控制消息代理模块共享的第二匿名共享内存中;

(b-3)录音控制消息代理模块不断地从第二匿名共享内存中读取录音采集相关参数信息与录音启动信息,并通过第一通信模块将读取的录音采集相关参数信息与录音启动信息发送到远程桌面客户端;

(b-4)远程桌面客户端将通过第二通信模块接收的录音采集相关参数信息与录音启动信息传送至录音控制消息处理模块,并进行录音控制消息解析处理;

(b-5)录音控制消息处理模块将处理后的录音采集相关参数信息传送至录音重定向处理模块;

(b-6)录音重定向处理模块根据接收到的录音采集相关参数信息从麦克风设备中采集录音数据,并将该录音数据经第二通信模块传送至远程桌面服务端;

(b-7)远程桌面服务端将通过第一通信模块接收的录音数据传送至录音重定向代理模块进行数据缓存处理,并将处理后的录音数据存放于音频硬件抽象层模块中的录音数据导入模块与录音重定向代理模块共享的第三匿名共享内存中;

(b-8)录音数据导入模块不断地从第三匿名共享内存中读取录音数据,并将该录音数据写入到系统硬件抽象层的录音数据声卡驱动读取函数接口中;

(b-9)录音应用停止录制音频,audioflinger进程中的系统录音采集组件对暂停录音请求进行停止录音采集处理,并将处理好的暂停录音请求传送至音频硬件抽象层模块中的录音控制消息捕获模块;

(b-10)录音控制消息捕获模块捕获到暂停录音请求,并进行录音控制消息封装处理,得到录音暂停消息,并将该录音暂停消息存放于录音控制消息捕获模块与远程桌面服务端中的录音控制消息代理模块共享的第二匿名共享内存中;

(b-11)录音控制消息代理模块不断地从第二匿名共享内存中读取录音暂停信息,并通过第一通信模块将读取的录音暂停信息发送到远程桌面客户端;

(b-12)远程桌面客户端将通过第二通信模块接收的录音暂停信息传送至录音控制消息处理模块,并进行录音控制消息解析处理,

(b-13)录音控制消息处理模块将处理后的录音暂停信息传送至录音重定向处理模块;

(b-14)录音重定向处理模块根据接收到的录音暂停信息停止向远程桌面服务端发送采集到的录音数据,实现录音重定向。

本发明的技术方案基于android系统远程桌面环境,实现了音频播放重定向和麦克风录音重定向两种功能,满足远程桌面环境下的音频需求。相比于其他桌面系统的音频重定向,本方案首先实现了android移动操作系统平台下的音频重定向的功能,并且达到了低延时的效果。同时,本方案的技术实现对android源码做了保证可移植性条件下的最小化修改,可以适配在不同版本和不同厂商定制的android系统中。

附图说明

图1是本发明提供的android系统服务端的实施例结构示意图;

图2是本发明提供的基于android系统远程桌面的音频重定向系统的结构示意图;

图3是本发明提供的基于android系统远程桌面的音频重定向方法中音频播放重定向方法实施例流程示意图;

图4是本发明提供的基于android系统远程桌面的音频重定向方法中录音重定向方法实施例流程示意图。

具体实施方式

为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的技术方案进行详细说明。

图1所示的是本发明提供的android系统服务端的实施例结构示意图。本实施例所描述的android系统服务端,包括:应用层的音乐播放应用与录音应用、系统框架层的audiofinger进程、硬件抽象层的音频硬件抽象层模块以及系统框架层的远程桌面服务端。

其中,audiofinger进程包括:系统音频播放组件,用于对音乐文件进行解码混音处理,并将处理好的音频播放数据传送至硬件抽象层的音频硬件抽象层模块;系统录音采集组件,用于对应用层的录音请求进行处理,并将处理好的请求传送至音频硬件抽象层模块。

音频硬件抽象层模块包括:录音控制消息捕获模块,负责在系统硬件抽象层捕获到录音启动、暂停和录音采集相关参数等消息,然后传递给远程桌面服务端应用程序中的录音控制消息代理模块;录音数据导入模块,负责将远程桌面服务端应用程序中录音重定向代理模块接收到的录音数据导入到系统硬件抽象层的录音数据声卡驱动读取函数接口中;音频播放数据截取模块,负责从系统硬件抽象层中写入声卡驱动的函数接口截取到音频播放数据,然后传送给远程桌面服务端应用程序中音频播放重定向代理模块。

远程桌面服务端包括:第一通信模块,主要负责远程桌面服务端和远程桌面客户端之间的网络通信;录音控制消息代理模块,负责将录音启动、暂停和录音采集相关参数等消息传送到远程桌面客户端;录音重定向代理模块,负责接收从远程桌面客户端麦克风设备采集到的录音数据;音频播放重定向代理模块,负责将远程桌面服务端产生的音频播放数据传送到远程桌面客户端。

图2所示的是本发明提供的基于android系统远程桌面的音频重定向系统的实施例结构示意图。本实施例所描述的基于android系统远程桌面的音频重定向系统,包括图1所示的android系统服务端和远程桌面客户端,android系统服务端与远程桌面客户端通过网络连接,其中,远程桌面客户端,包括:第二通信模块,主要负责远程桌面客户端和远程桌面服务端之间的网络通信;录音控制消息处理模块,负责解析从远程桌面服务端发送过来的录音控制消息,并控制录音重定向处理模块是否发送麦克风设备采集到的录音数据;录音重定向处理模块,负责根据录音控制消息处理模块发送过来的麦克风录音采集参数来采集录音数据,并将录音数据发送到远程桌面服务端;音频播放重定向处理模块,负责将远程服务端发送过来的音频播放数据在远程桌面客户端本地的声卡上播放。

本发明提供的基于android系统远程桌面的音频重定向方法,包括:音频播放重定向方法与录音重定向方法。

其中,图3所示的是本发明提供的基于android系统远程桌面的音频播放重定向方法实施例流程示意图。本实施例所描述的基于android系统远程桌面的音频播放重定向方法,具体包括以下步骤:

s101,音乐播放应用开始播放音乐,音乐文件经系统音频播放组件解码混音处理后,得到预处理音频数据,并将该预处理音频数据传送至音频播放数据截取模块。

s102,音频播放数据截取模块截取预处理音频数据中的音频播放数据,并将该音频播放数据存放于第一匿名共享内存中。

s103,音频播放重定向代理模块不断地从第一匿名共享内存中读取音频播放数据,并通过第一通信模块将音频播放数据发送到远程桌面客户端。

s104,远程桌面客户端将通过第二通信模块接收的音频播放数据传送至音频播放重定向处理模块,并使用远程桌面客户端本地音频播放系统进行处理。

s105,音频播放重定向处理模块将处理后的音频播放数据于本地声卡设备上播放出来,实现音频播放重定向。

图4是本发明提供的基于android系统远程桌面的录音重定向方法实施例流程示意图。本实施例所描述的基于android系统远程桌面的录音重定向方法,具体包括以下步骤:

s201,录音应用开始录制音频,系统录音采集组件对录音启动请求进行录音采集初始化处理,得到预处理录音启动请求,并将该预处理录音启动请求传送至录音控制消息捕获模块。

s202,录音控制消息捕获模块捕获到预处理录音启动请求,进行录音采集相关参数初始化处理,得到录音启动信息和录音采集相关参数信息,并将录音采集相关参数信息与录音启动信息存放于第二匿名共享内存中。

此处的录音采集相关参数消息包括:录音采集所需的采样率、采样通道数以及采样深度参数信息。

s203,录音控制消息代理模块不断地从第二匿名共享内存中读取录音采集相关参数信息与录音启动信息,并通过第一通信模块将读取的录音采集相关参数信息与录音启动信息发送到远程桌面客户端。

s204,远程桌面客户端将通过第二通信模块接收的录音采集相关参数信息与录音启动信息传送至录音控制消息处理模块,并进行录音控制消息解析处理。

s205,录音控制消息处理模块将处理后的录音采集相关参数信息传送至录音重定向处理模块。

s206,录音重定向处理模块根据接收到的录音采集相关参数信息从麦克风设备中采集录音数据,并将该录音数据经第二通信模块传送至远程桌面服务端。

s207,远程桌面服务端将通过第一通信模块接收的录音数据传送至录音重定向代理模块进行数据缓存处理,并将处理后的录音数据存放于第三匿名共享内存中。

s208,录音数据导入模块不断地从第三匿名共享内存中读取录音数据,并将该录音数据写入到系统硬件抽象层的录音数据声卡驱动读取函数接口中。

s209,录音应用停止录制音频,audioflinger进程中的系统录音采集组件对暂停录音请求进行停止录音采集处理,并将处理好的暂停录音请求传送至录音控制消息捕获模块。

s210,录音控制消息捕获模块捕获到暂停录音请求,并进行录音控制消息封装处理,得到录音暂停消息,并将该录音暂停消息存放于第二匿名共享内存中。

s211,录音控制消息代理模块不断地从第二匿名共享内存中读取录音暂停信息,并通过第一通信模块将读取的录音暂停信息发送到远程桌面客户端。

s212,远程桌面客户端将通过第二通信模块接收的录音暂停信息传送至录音控制消息处理模块,并进行录音控制消息解析处理。

s213,录音控制消息处理模块将处理后的录音暂停信息传送至录音重定向处理模块。

s214,录音重定向处理模块根据接收到的录音暂停信息停止向远程桌面服务端发送采集到的录音数据。

以上所述的具体实施方式对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的最优选实施例,并不用于限制本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换等,均应包含在本发明的保护范围之内。

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