最后
代码真的是重质不重量,质量高的代码,是当前代码界提倡的,当然写出高质量的代码肯定需要一个相当高的专业素养,这需要在日常的代码书写中逐渐去吸收掌握,谁不是每天都在学习呀,目的还不是为了一个,为实现某个功能写出高质量的代码。
所以,长征路还长,大家还是好好地做个务实的程序员吧。
最后,小编这里有一系列Android提升学习资料,有兴趣的小伙伴们可以来看下哦~
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
MediaRecorder和MeidaPlayer使用相同的服务。
基于OpenCore部分
external/opencore/android/author
这部分内容被编译成库libopencoreauthor.so。
第二部分 MediaRecorder的接口与架构 MediaRecorder的各个可以用下图的表示:
2009-7-11 18:04 上传
MediaRecorder部分的头文件在frameworks/base/include/media/目录中,这个目录是和libmedia.so库源文件的目录frameworks/base/media/libmedia/相对应的。主要的头文件有以下几个:
■mediarecorder.h :mediarecorder的上层接口
■IMediaRecorder.h:MediaRecorder的服务部分实现接口
■PVMediaRecorder.h :MediaRecorder的下层接口,由OpenCore实现 在这些头文件MediaRecorder.h提供了对上层的接口,而其他的几个头文件都是提供一些接口类(即包含了纯虚函数的类),这些接口类必须被实现类继承才能够使用。
整个MediaRecorder库和调用的关系如下图所示
2009-7-11 18:04 上传
整个MediaRecorder在运行的时候,可以大致上分成Client和Server两个部分,它们分别在两个进程中运行,它们之间使用Binder机制实现IPC通讯。 注意MediaRecorder中不需要使用callback,这点和MediaPlayer的架构有一定的区别,因此并不需要一个MediaRecorderClient的类。 MediaRecorder C语言上层的接口在mediarecorder.h 中,定义一个MediaRecorder类:
class MediaRecorder
{
public:
MediaRecorder();
~MediaRecorder();
status\_tinitCheck();
status\_tsetCamera(const sp<ICamera>& camera);
status\_tsetPreviewSurface(const sp<Surface>& surface);
status\_tsetVideoSource(int vs);
status\_tsetAudioSource(int as);
status\_tsetOutputFormat(int of);
status\_tsetVideoEncoder(int ve);
status\_tsetAudioEncoder(int ae);
status\_tsetOutputFile(const char\* path);
status\_tsetVideoSize(int width, int height);
status\_tsetVideoFrameRate(int frames\_per\_second);
status\_tprepare();
status\_tgetMaxAmplitude(int\* max);
status\_tstart();
status\_tstop();
status\_treset();
tatus\_tinit();
status\_tclose();
status\_trelease();
};
在meidarecorder的上层接口中,基本不涉及数据流的处理,但是需要设置两个重要的部分,一个是输入的设备ICamera,另一个是ICamera的预览(preview)Surface:
1.status\_tsetCamera(const sp<ICamera>& camera);
2.status\_tsetPreviewSurface(const sp<Surface>& surface);
这两个类需要通过上层的接口设置,其中设置的Surface在下层的处理中也会被设置到ICamera的接口中,ICamera则作为这种meidarecorder视频输入的设备,在meidarecorder底层的实现中,通过这个Icamera获取视频流。 prepare(),start(),stop()和reset()等几个函数用于设置控制媒体记录的运行。 另外的几个接口用于设置音频、视频的输入和格式,输出的格式。
第三部分 PVAuthor的架构 PVAuthor是基于OpenCore的AuthorEngine的Android实现, 代码在以下路径中: external/opencore/android/author/ 它实现的接口类是PVMediaRecorder.h,这个类基本上是一个封装,它需要处理三个方面的内容:
音频的输入环节(Audio Input)
最后
文章所有资料全部已经打包整理好,另外小编手头上整理了大量Android架构师全套学习资料,Android核心高级技术PDF文档+全套高级学习资料+视频+2021 BAT 大厂面试真题解析
资料展示:
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
做到真正的技术提升。**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!