云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > mediarecorder

mediarecorder

  • 62 次阅读
  • 3 次下载
  • 2025/5/6 3:08:17

Android的MediaRecorder框架介绍

框架AndroidJNI应用服务器多线程 第一部分 MediaRecorder概述

Android的MediaRecorder包含了Audio和video的记录功能,在Android的界面上,Music和Video两个应用程序都是调用MediaRecorder实现的。

MediaRecorder在底层是基于OpenCore(PacketVideo)的库实现的,为了构建一个

MediaRecorder程序,上层还包含了进程间通讯等内容,这种进程间通讯的基础是Android基本库中的Binder机制。

以开源的Android为例MediaRecorder的代码主要在以下的目录中: JAVA程序的路径:

/packages/apps/SoundRecorder/src/com/android/soundrecorder/SoundRecorder.java

JAVA Framework的路径:

frameworks/base/media/java/android/media/MediaRecorder.java

JAVA本地调用部分(JNI):

frameworks/base/media/jni/android_media_MediaRecorder.cpp

这部分内容编译成为目标是libmedia_jni.so。

主要的头文件在以下的目录中:

frameworks/base/include/media/

多媒体底层库在以下的目录中:

frameworks/base/media/libmedia/

这部分的内容被编译成库libmedia.so。

多媒体服务部分:

frameworks/base/media/libmediaplayerservice/ MediaRecorder和MeidaPlayer使用相同的服务。

基于OpenCore部分

PVAuthor是基于OpenCore的AuthorEngine的Android实现, 代码在以下路径中: external/opencore/android/author

这部分内容被编译成库libopencoreauthor.so。

它实现的接口类是PVMediaRecorder.h,这个类基本上是一个封装,它需要处理三个方面的内容:

音频的输入环节(Audio Input) 视频的输入(Camera) 视频的预览(使用ISurface)

其中实现PVMediaRecorder.h的类是PVMediaRecorder.cpp,authordriver.h和authordriver.cpp是具体实现,android_audio_input.*和

android_camera_input.*是两个PvmiMIOControl的实现,PvmiMIOControl最终会构建成一个Node.。它们是Active Source类型的Node,因此它们需要实现PvmiMediaTransfer::writeComplete()函数。

android_audio_input.*是作为音频输入的实现,它基于Android的Audio系统构建,主要使用media/AudioRecord.h接口àAudioRecord.cpp 第二部分 MediaRecorder的接口与架构 MediaRecorder的各个可以用下图的表示:

MediaRecorder部分的头文件在frameworks/base/include/media/目录中,这个目录是和libmedia.so库源文件的目录frameworks/base/media/libmedia/相对应的。主要的头文件有以下几个:

■mediarecorder.h :mediarecorder的上层接口

■IMediaRecorder.h:MediaRecorder的服务部分实现接口

■PVMediaRecorder.h :MediaRecorder的下层接口,由OpenCore实现 在这些头文件MediaRecorder.h提供了对上层的接口,而其他的几个头文件都是提供一些接口类(即包含了纯虚函数的类),这些接口类必须被实现类继承才能够使用。

整个MediaRecorder库和调用的关系如下图所示: 整个MediaRecorder在运行的时候,可以大致上分成Client和Server两个部分,它们分别在两个进程中运行,它们之间使用Binder机制实现IPC通讯。注意MediaRecorder中不需要使用callback,这点和MediaPlayer的架构有一定的区别,因此并不需要一个MediaRecorderClient的类。

MediaRecorder C语言上层的接口在mediarecorder.h 中,定义一个MediaRecorder类: 复制代码

1. class MediaRecorder

2. {

3. public:

4. MediaRecorder();

5. ~MediaRecorder();

6. status_tinitCheck();

7. status_tsetCamera(const sp& camera);

8. status_tsetPreviewSurface(const sp& surface);

9. status_tsetVideoSource(int vs);

10. status_tsetAudioSource(int as);

11. status_tsetOutputFormat(int of);

12. status_tsetVideoEncoder(int ve);

13. status_tsetAudioEncoder(int ae);

14. status_tsetOutputFile(const char* path);

15. status_tsetVideoSize(int width, int height);

16. status_tsetVideoFrameRate(int frames_per_second);

17. status_tprepare();

18. status_tgetMaxAmplitude(int* max);

19. status_tstart();

20. status_tstop();

21. status_treset();

22. status_tinit();

23. status_tclose();

24. status_trelease();

25. };

在meidarecorder的上层接口中,基本不涉及数据流的处理,但是需要设置两个重要的部分,一个是输入的设备ICamera,另一个是ICamera的预览(preview)Surface: 复制代码

1. status_tsetCamera(const sp& camera);

2. status_tsetPreviewSurface(const sp& surface);

这两个类需要通过上层的接口设置,其中设置的Surface在下层的处理中也会被设置到ICamera的接口中,ICamera则作为这种meidarecorder视频输入的设备,在meidarecorder底层的实现中,通过这个Icamera获取视频流。

prepare(),start(),stop()和reset()等几个函数用于设置控制媒体记录的运行。

另外的几个接口用于设置音频、视频的输入和格式,输出的格式。 第三部分 PVAuthor的架构

PVAuthor是基于OpenCore的AuthorEngine的Android实现, 代码在以下路径中:

external/opencore/android/author/

它实现的接口类是PVMediaRecorder.h,这个类基本上是一个封装,它需要处理三个方面的内容:

音频的输入环节(Audio Input) 视频的输入(Camera) 视频的预览(使用ISurface)

其中实现PVMediaRecorder.h的类是PVMediaRecorder.cpp,authordriver.h和authordriver.cpp是具体实现,android_audio_input.*和

android_camera_input.*是两个PvmiMIOControl的实现,PvmiMIOControl最终会构建成一个Node.。它们是Active Source类型的Node,因此它们需要实现PvmiMediaTransfer::writeComplete()函数。

搜索更多关于: mediarecorder 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

Android的MediaRecorder框架介绍 框架AndroidJNI应用服务器多线程 第一部分 MediaRecorder概述 Android的MediaRecorder包含了Audio和video的记录功能,在Android的界面上,Music和Video两个应用程序都是调用MediaRecorder实现的。 MediaRecorder在底层是基于OpenCore(PacketVideo)的库实现的,为了构建一个MediaRecorder程序,上层还包含了进程间通讯等内容,这种进程间通讯的基础是Android基本库中的Binder机制。 以开源的Android为例MediaRecorder的代码主要在以下的目录中: JAVA程序的路径: /packages/apps/SoundRecorde

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com