Android Media ——MediaRecorder主要流程(一)

一、总体架构说明:
其实在Android中,许多应用功能都是以客户端(代理)服务器模式运行的,
通过binder实现客户端与服务端的通信,让函数调用在本地与远端没有差别

而在录像过程中使用的MediaRecorder便是这种结构的一种体现,
录像往往涉及多个模块:camera模块,编码模块,omx模块,容器模块
但总的来说录像功能是借上层暴露的MediaRecorder接口通过
操作StagefrightRecorder实现编解码与音视频混合的。

如图为MediaRecorder的概括图:
图片待补充

  1. 可以认为在APP/JNI/NATIVE这边的mediaRecorder是在一个进程当中,
    这部分涉及的代理接口有:

    • BnMediaRecorderClient
    • BpMediaPlayerService
    • BpMediaRecorder
  2. 在MediaPlayerService当中的MediaRecorderClient/StagefrightRecorder
    则在另外一个进程当中,Bp(客户端方向)和Bn(服务端方向)之间通过binder通信,
    使得其在使用上区别不大,服务端这边涉及的有:

    • BpMediaRecorderClient(如果需要通知客户端的话,它可以获得这个Bp)
    • BnMediaRecorder
    • BnMediaPlayerService

除了创建mediaRecorder时,是IMediaPlayerService中的
BpMediaPlayerService向BnMediaPlayerService发送remote外。
其他操作都是借助BpMediaRecorder向BnMediaRecorder通信实现的。

猜你喜欢

转载自blog.csdn.net/u011795345/article/details/105377656