MediaServer 目录结构

深入理解android卷I

AudioFllinger:音频系统中的核心服务

AudioPolicyService:音频系统中关于音频策略的重要服务

MediaPlayerService:多媒体系统中的重要服务

CameraService:有关摄像 / 照相的重要服务

 

一、MediaPlayerService
第一部分 MediaPlayer概述 
Android的MediaPlayer包含了Audio和video的播放功能,在Android的界面上,Music和Video两个应用程序都是调用MediaPlayer实现的。 

MediaPlayer在底层是基于OpenCore(PacketVideo)的库实现的,为了构建一个MediaPlayer程序,上层还包含了进程间通讯等内容,这种进程间通讯的基础是Android基本库中的Binder机制。 

以开源的Android为例MediaPlayer的代码主要在以下的目录中: 
JAVA程序的路径:packages/apps/Music/src/com/android/music/ 
JAVA类的路径:frameworks/base/media/java/android/media/MediaPlayer.java 

JAVA本地调用部分(JNI):frameworks/base/media/jni/android_media_MediaPlayer.cpp 
这部分内容编译成为目标是libmedia_jni.so。 

主要的头文件在以下的目录中:frameworks/base/include/media/ 

多媒体底层库在以下的目录中:frameworks/base/media/libmedia/ 
这部分的内容被编译成库libmedia.so。 

多媒体服务部分:frameworks/base/media/libmediaplayerservice/ 
文件为mediaplayerservice.h和mediaplayerservice.cpp 
这部分内容被编译成库libmediaplayerservice.so。 

基于OpenCore的多媒体播放器部分 external/opencore/ 
这部分内容被编译成库libopencoreplayer.so。 

从程序规模上来看,libopencoreplayer.so是主要的实现部分,而其他的库基本上都是在其上建立的封装和为建立进程间通讯的机制

 

 

Android MediaPlayer的核心原理

 

http://yangguangfu.iteye.com/blog/699000

 

 Android开发之MediaPlayerService服务详解(一)

 

 

 

http://blog.csdn.net/xww810319/article/details/17754913

 

http://www.byywee.com/page/M0/S846/846697.html

 

android 多媒体框架中mediaplay与opencore的衔接调用过程

 

 

 

http://www.cnblogs.com/eustoma/archive/2011/08/21/2415827.html

 

 

frameworks/base/libmedia/ 包含以下文件

 

mediaplayer.cpp

MediaPlayer类的实现,应用程序实例化一个MediaPlayer对象,通过这个对象设置视频源,进行播放,暂停等播放操作,这个类也提供了getVideoHeight,getVideoWidth,getCurrentPosition,getTrackCount,getDuration等获取元数据的操作

mediarecorder.cpp

MediaRecorder类的实现,应用程序通过一个MediaRecorder对象和MediaPlayerService通信,进行视频的录制

mediametadataretriever.cpp

MediaMetadataRetriever类的实现,应用程序通过一个MediaRecorder对象和MediaPlayerService通信,这个类提供了三种元数据获取:传统意义的metadata, AlbumArt以及某一时刻帧数据。

MediaScanner.cpp和MediaScannerClient.cpp

是和文件扫描相关的内容,参考另外一篇分析

Autodetect.cpp

对外提供了findPossibleEncodings函数,用来查找指定字符对应的字符集

 

发布了207 篇原创文章 · 获赞 59 · 访问量 5万+
展开阅读全文

ICamera died,MediaMetadataRetriever server died!

10-19

使用视频录像功能报错,请大神们帮忙看一下 10-19 11:44:10.875: V/Camera-JNI(24054): get_native_camera: context=0x744aaeb0, camera=0x40ddbc38 10-19 11:44:10.895: I/MediaRecorderJNI(24054): prepare: surface=0x742b8a18 (identity=156) 10-19 11:44:11.515: W/Camera(24054): ICamera died 10-19 11:44:11.515: W/MediaMetadataRetriever(24054): MediaMetadataRetriever server died! 10-19 11:44:11.515: V/Camera-JNI(24054): notify 10-19 11:44:11.515: W/Camera(24054): Camera server died! 10-19 11:44:11.515: W/IMediaDeathNotifier(24054): media server died 10-19 11:44:11.515: E/Camera(24054): Error 100 10-19 11:44:13.077: V/Camera-JNI(24054): setHasPreviewCallback: installed:0, manualBuffer:0 10-19 11:44:13.077: V/Camera-JNI(24054): get_native_camera: context=0x744aaeb0, camera=0x40ddbc38 10-19 11:44:13.077: V/Camera-JNI(24054): Clearing callback buffers, 0 remained 10-19 11:44:13.077: V/Camera-JNI(24054): stopPreview 10-19 11:44:13.077: V/Camera-JNI(24054): get_native_camera: context=0x744aaeb0, camera=0x40ddbc38 10-19 11:44:13.077: V/Camera-JNI(24054): lock 10-19 11:44:13.077: V/Camera-JNI(24054): get_native_camera: context=0x744aaeb0, camera=0x40ddbc38 10-19 11:44:13.077: V/Camera-JNI(24054): release camera 10-19 11:44:13.077: V/Camera-JNI(24054): release 10-19 11:44:13.077: V/Camera-JNI(24054): Clearing callback buffers, 0 remained 10-19 11:44:13.077: V/Camera-JNI(24054): Clearing callback buffers, 0 remained 10-19 11:44:13.077: V/Camera-JNI(24054): native_release: context=0x744aaeb0 camera=0x40ddbc38 10-19 11:44:13.077: V/Camera-JNI(24054): release 10-19 11:44:13.077: V/Camera-JNI(24054): Clearing callback buffers, 0 remained 10-19 11:44:13.077: V/Camera-JNI(24054): Clearing callback buffers, 0 remained 问答

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览