您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 其它相关文档 > 手机开发培训 09_Android的多媒体系统
Android的多媒体系统Android的多媒体系统第一部分多媒体系统的结构第二部分多媒体的各个层次第三部分多媒体实现的核心部分OpenCore第一部分多媒体系统的结构Android的多媒体部分的框架涉及到应用层、JAVA框架、C语言框架、硬件抽象层等环节。多媒体主要包括两方面的内容:输入输出环节(音频视频的输入输出)中间处理环节(编解码环节)其中,输入输出环节由其他方面的硬件抽象层实现,中间处理环节主要由PacketVideo实现,可以使用硬件加速。第一部分多媒体系统的结构Android的多媒体应用业务:MusicPlayerVideoPlayerCameraSoundRecorderCamcorderVideoTelephone第一部分多媒体系统的结构MediaServiceMediaAPIMediaJNIJavaClassofMedialibmediaMediaPlayerJava框架MediaRecorderIMediaPlayerIMediaRecorderPVPlayerPVAuthorIPC第一部分多媒体系统的结构JAVA类:frameworks/base/media/java/android/media/类的名称为android.media.*JAVA本地调用部分(JNI):frameworks/base/media/*这部分内容编译成为目标是libmedia_jni.so.基于OpenCore的多媒体播放器和记录器external/opencore/第一部分多媒体系统的结构多媒体框架的media库:frameworks/base/include/media/frameworks/base/media/libmedia/这部分的内容被编译成库libmedia.so。多媒体服务部分:frameworks/base/media/libmediaplayerservice/这部分内容被编译成库libmediaplayerservice.so。第一部分多媒体系统的结构从多媒体应用实现的角度,主要包括两方面的内容:输入输出环节(音频、视频纯数据流的输入输出系统)中间处理环节(文件格式处理环节和编解码环节)以一个MP3播放器为例,从功能的角度就是将一个mp3格式的文件作为播放器的输入,将声音从播放设备输出。从实现的角度,MP3播放器经过了一下的阶段:MP3格式的文件解析、MP3编码流的解码、PCM输出的播放。文件格式解析单元MP3编码流MP3文件解码单元PCM数据音频输出设备3.1多媒体的各种业务Android的多媒体系统SurfaceFlingerNativeFrameWorkDriverPacketVideoFrameworkPVAuthorPVPlayermediaplayerandroid.media.MediaRecorderJavaFrameWorkJavaAplicationMainframebufferHardwareCodecVideoPlaneAudioDriverCameraAudioFilngerCameraHALCameraDriverAudioHALMediaPlayerSeriviceCameraServiceMidiPlayerVorbisPlayermediarecorderandroid.hardware.Cameraandroid.media.MediaPlayerandroid.view.SurfaceCamera/CamcorderMusic(MediaPlayer)SoundRecoderandroid.widget.VideoViewOverlayHAL3.1多媒体的各种业务音频/视频播放器NativeFrameWorkDriverPacketVideoFrameworkPVPlayermediaplayerJavaFrameWorkJavaAplicationHardwareCodecMediaPlayerSeriviceMidiPlayerVorbisPlayerStreamMediaMediaFileVideoStreamAudioStreamandroid.media.MediaPlayerandroid.view.SurfaceMusic(MediaPlayer)android.widget.VideoViewVideoPlayerMusicPlayerAudioDriverAudioFilngerAudioHALSurfaceFlingerMainframebufferVideoPlaneOverlayHAL3.1多媒体的各种业务NativeDriverJavaFrameWorkJavaAplicationCameraCameraHALCameraDriverCameraServiceandroid.hardware.Cameraandroid.view.SurfaceCameraJPEGFileVideoPreview(Viewfinder)EncoderToJPEGFileSurfaceFlingerMainframebufferVideoPlaneOverlay照相机3.1多媒体的各种业务NativeDriverPacketVideoFrameworkPVAuthorandroid.media.MediaRecorderJavaFrameWorkJavaAplicationHardwareCodecmediarecorderSoundRecoderAudioFileandroid.media.MediaPlayerMediaPlayerSeriviceAudioStreamAudioDriverAudioFilngerAudioHAL录音机3.1多媒体的各种业务NativeDriverPacketVideoFrameworkPVAuthorandroid.media.MediaRecorderJavaFrameWorkJavaAplicationHardwareCodecCameraCameraHALCameraDriverCameraServicemediarecorderandroid.view.SurfaceMediaFileVideoStreamAudioStreamPreviewCamcorderandroid.widget.VideoViewMediaPlayerSeriviceSurfaceFlingerMainframebufferVideoPlaneAudioDriverAudioFilngerAudioHALOverlay摄像机第二部分多媒体的各个层次2.1libmedia的框架部分2.2多媒体服务2.3多媒体部分的JNI代码2.4多媒体部分的JAVA框架代码2.5类android.widget.VideoView第二部分多媒体的各个层次Android多媒体部分的C语言部分的核心是media库,它主要记录了媒体播放器和媒体记录器的框架。media库向上层通过JNI提供接口,下层通过PacketVideo等实现。2.1libmedia的框架部分IMediaPlayerClientBnMediaPlayerClientMediaPlayerIMediaPlayerBnMediaPlayerandroid_media_MediaPlayerJAVAIMediaPlayerServiceBnMediaPlayerServiceMediaPlayerServiceMediaPlayerService::ClientMediaPlayerServiceMediaPlayerBaseMediaPlayerInterfacePVPlayerPVPlayerIMediaPlayermediaplayerIMediaPlayerClientIMediaPlayerServiceMediaPlayerInterfaceIPC媒体播放器2.1libmedia的框架部分MediaRecorderIMediaRecorderBnMediaRecorderandroid_media_recorderJAVAIMediaPlayerServiceBnMediaPlayerServiceMediaPlayerServiceMediaPlayerService::MediaRecorderClientMediaPlayerServicePVAuthorPVAuthorIMediaRecorderMediaRecorderIMediaPlayerServicexIPCIMediaPlayerClientBnMediaPlayerClientIMediaPlayerClient媒体记录器2.1libmedia的框架部分媒体元信息MediaMetadataRetrieverIMediaMetadataRetrieverBnMediaMetadataRetrieverandroid_media_MediaMetadataRetrieverJAVAIMediaPlayerServiceBnMediaPlayerServiceMediaPlayerServiceMediaPlayerService::ClientMediaPlayerServiceMediaMetadataRetrieverBaseMediaMetadataRetrieverInterfacePVMetadataRetrieverPVMetadataRetrieverIMediaMetadataRetrievermediametadataretrieverIMediaPlayerServiceMediaMetadataRetrieverInterfaceIPC3.2多媒体的服务多媒体服务的守护进程的代码:frameworks/base/media/mediaserver/其中只有一个源文件main_mediaserver.cpp,将被编译成为一个可执行程序mediaserver。它负责启动了多媒体服务、照相机服务,音频服务这三个服务servicemedia/system/bin/mediaserverusermediagroupsystemaudiocameragraphicsinetnet_btnet_bt_admin3.2多媒体的服务多媒体服务提供多媒体的服务部分,多媒体服务通过IPC与libmedia库通信,多媒体服务其路径是:frameworks/base/media/libmediaplayerservice/其中,主要的类是MediaPlayerService,从这个类中可以获取IMediaPlayer和IMediaRecorder两个实现类。IPCMediaRecorderIMediaRecorderMediaRecorderClientPVMediaRecorderIPCMediaMetadataRetrieverIMediaMetadataRetrieverMetadataMediaRetrieverClientPVMediaMetadataRetrieverIPCMediaPlayerIMediaPlayerMediaPlayerService::ClientMediaPlayerBasePVPlayerMidiFileVorbisPlayer2.2多媒体的服务MediaPlayerService的定义:classMediaPlayerService:publicBnMediaPlayerService{virtualspIMediaRecordercreateMediaRecorder(pid_tpid);virtualspIMediaMetadataRetrievercreateMetadataRetriever(pid_tpid);virtualspIMediaPlayercreate(pid_tpid,constspIMediaPlay
本文标题:手机开发培训 09_Android的多媒体系统
链接地址:https://www.777doc.com/doc-7211260 .html