MediaRecord 分析

MediaRecord.java是app调用录制功能的接口,他通过android_media_MediaRecorder JNI调用,与c++层的MediaRecord.cpp对应。MediaRecord会通过binder与MediaPlayerService建立连接,然后在MediaPlayerService会创建一个MediaRecorderClient  他的proxy保存在app端的mMediaRecorder。RecordingProxy和ProxyListener都是一个binder对象,其中RecordingProxy是在app端创建的,对应的proxy保存在Service端的MediaRecordClient的mCameraRecordingProxy中,RecordingProxy 是在Service端创建的,他的proxy保存在app端的Camera.cpp 中的mRecordingProxyListener中。

如之前介绍每个MediaRecord在MediaPlayerService中都有个MediaRecordClient对象,这个对象里面有个mRecorder(StagefrightRecorder)对象,在mRecorder中有个writer对象,在MGEG4录制的时候是MPEG4Writer对象,MPEG4Writer会startWriterThread() 开启封装视频文件的写线程;startTracks(param) 开启视频数据的读线程,也就是轨迹线程。后者负责读取Camera传过来的数据到buf中(其实是camera - ->app - -> MPEG4Writer),前者负责读buf并写入文件。


参考文章:

http://www.voidcn.com/blog/mr_zjc/article/p-4858473.html

http://blog.csdn.net/mr_zjc/article/details/46822833

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值