本发明涉及android平台,特别涉及一种android平台跨进程音视频加载方法。
背景技术:
1、android(安卓)操作系统主要用于移动设备,如智能手机和平台电脑等。全世界采用这款系统的设备数量已经达到10亿台。android系统已经成为智能手机领域占有量最高的系统,android应用的开发也随之蓬勃发展。
2、android interface definition language(aidl)是一种用于在android应用程序中进行跨进程通信的接口定义语言。aidl允许不同的应用程序在不同的进程中进行通信,以便共享数据和调用远程服务。
3、使用aidl,您可以定义接口和方法,然后在不同的应用程序之间进行远程调用。aidl文件定义了接口的方法、参数和返回类型,并生成对应的java接口文件和相关的代理类。这些代理类实现了ipc(inter-process communication)机制,使得应用程序可以跨进程进行通信。
4、aidl提供了一种方便的方式来定义跨进程通信的接口,并自动生成相应的代码,简化了开发者在处理ipc时的工作。在使用aidl进行跨进程通信时,通常会涉及到客户端和服务端两个组件,客户端通过绑定远程服务来获得远程对象的引用,并通过接口进行方法调用和数据交换。
5、然而在android平台不同的进程中是不能互相访问对方的内存资源,这意味着前台进程创建声明的一块内存地址只能在前台进程内部访问使用,如果后台进程想要直接访问前台进程这块内存是没有访问权限的,本技术因此而研发。
技术实现思路
1、针对现有技术存在的问题,本发明提供一种android平台跨进程音视频加载方法,解决前台进程想要加载后台进程媒体数据的应用场景;在这个应用场景中,前台进程提供音视频渲染需要的surface,后台进程负责将音视频数据解码成原始数据并渲染到前台进程的surface上,实现业务和视图显示逻辑进行分离,最终达到的效果就是前台进程可以正常显示后台进程的音视频数据,同时前台进程可以控制后台进程加载音视频数据的状态,比如开始加载、暂停加载、恢复加载、释放加载资源,另外后台进程也可以将资源加载状态通过aidl方式告知前台进程,实现前台进程能“清楚感知”到后台进程的实时状态。
2、为了实现上述目的,本发明提供一种android平台跨进程音视频加载方法,包括如下步骤:
3、步骤s1:视图进程创建surfaceview,并获取用于进行opengl渲染的surface引用;
4、步骤s2:绑定后台进程的aidl服务;
5、步骤s3:通过aidl服务把视图进程的surface应用传递到后台进程;
6、步骤s4:后台进程收到aidl发送过来的surface应用以后初始化opengl环境;
7、步骤s5:视图进程通过aidl服务通知后台进程开始加载媒体资源;
8、步骤s6:后台进程收到加载资源通知以后开始读取媒体资源,并对读取到的媒体数据进行解码;
9、步骤s7:解码完第一帧数据以后发送消息通知视图进程播放成功;
10、步骤s8:后台进程把解码完成的第一帧数据渲染到surface上,或,进行播放;
11、步骤s9:后台进程加载播放完媒体数据以后通过aidl服务通知视图进程播放结束;
12、步骤s10:视图进程解绑aidl服务,并且回收渲染surfaceview和surface。
13、优选的,所述步骤s2中的绑定后台进程的aidl服务是通过aidl协议进行绑定。
14、优选的,所述步骤s5中的媒体资源为本地的mp4文件。
15、优选的,所述步骤s5的后台进程将媒体资源已经开始加载的信息通过aidl服务传递给视图进程进行保存。
16、优选的,所述步骤s6的媒体数据包括视频数据、音频数据。
17、优选的,所述步骤s7中的第一帧数据包括yuv数据、pcm数据,其中,yuv数据是通过将视频数据解码而获得,pcm数据是通过将音频数据解码而获得。
18、优选的,所述步骤s8中具体过程为:后台进程把解码完成的yuv数据使用opengl渲染到surface上,把解码完成的pcm数据使用系统音频播放器进行播放。
19、采用本发明的技术方案,具有以下有益效果:
20、1、本发明极大的简化了跨进程实现音视频资源的加载,几乎可以做到和单进程加载资源没有差异,更简洁、高效、安全的实现跨进程加载媒体资源,视图进程只需要提供渲染需要的surface,而不用关心媒体数据的来源以及数据是怎么加载解析以及渲染的;对于后台进程来说,它只需要负责媒体数据的加载、解析以及渲染,从安全的角度来说也更安全,因为视图进程只是提供了一个渲染“容器”而没有途径拿到渲染的真实数据;
21、2、本发明技术进程间通信方式采用的是android原生支持的aidl技术,通过aidl方式实现多个进程之前消息交互以及数据传递,aidl在android中广泛应用于多进程通信、远程服务、跨应用数据共享等场景,它提供了一种可靠、高效的方式来实现应用程序之间的通信,并且具有良好的安全性和稳定性;
22、3、本发明解决前台进程想要加载后台进程媒体数据的应用场景;在这个应用场景中,前台进程提供音视频渲染需要的surface,后台进程负责将音视频数据解码成原始数据并渲染到前台进程的surface上,实现业务和视图显示逻辑进行分离,最终达到的效果就是前台进程可以正常显示后台进程的音视频数据,同时前台进程可以控制后台进程加载音视频数据的状态,比如开始加载、暂停加载、恢复加载、释放加载资源,另外后台进程也可以将资源加载状态通过aidl方式告知前台进程,实现前台进程能“清楚感知”到后台进程的实时状态。
1.一种android平台跨进程音视频加载方法,其特征在于,包括如下步骤:
2.根据权利要求1所述的android平台跨进程音视频加载方法,其特征在于,所述步骤s2中的绑定后台进程的aidl服务是通过aidl协议进行绑定。
3.据权利要求1所述的android平台跨进程音视频加载方法,其特征在于,所述步骤s5中的媒体资源为本地的mp4文件。
4.根据权利要求1所述的android平台跨进程音视频加载方法,其特征在于,所述步骤s5的后台进程将媒体资源已经开始加载的信息通过aidl服务传递给视图进程进行保存。
5.根据权利要求1所述的android平台跨进程音视频加载方法,其特征在于,所述步骤s6的媒体数据包括视频数据、音频数据。
6.根据权利要求1所述的android平台跨进程音视频加载方法,其特征在于,所述步骤s7中的第一帧数据包括yuv数据、pcm数据,其中,yuv数据是通过将视频数据解码而获得,pcm数据是通过将音频数据解码而获得。
7.根据权利要求1所述的android平台跨进程音视频加载方法,其特征在于,所述步骤s8中具体过程为:后台进程把解码完成的yuv数据使用opengl渲染到surface上,把解码完成的pcm数据使用系统音频播放器进行播放。