我们这篇开始一起研究Android多媒体的框架,有兴趣的同学可以和我们一起学习多媒体的内容。下面给出大概学习的路径也就是知识点,从简单的多媒体知识,到Android多媒体框架是一个渐进的过程。中间有些内容不一定会写,但是大概学习的思路是这样的,如果没有写道的请大家脑部下。
Android media在android架构中比较重要的一个服务框架,用的是cpp写的,不同于ams、wms等,需要大家有c语言的基础。我们这里重点会介绍mediaplayerservice,当然也会涉及到媒体扫描和audioflinger等等。
一、Android 音视频学习基础
1、音视频基础知识
1.1 播放器原理
1.2 基础数据
1.2.1 视频 yuv rgb yuv420
1.2.2 音频 pcm adpcm
1.3 编码格式
1.3.1 音频编码格式(AAC,MP3,AC-3)
1.3.2 视频编码格式(H.264,MPEG2,VC-1)
1.4 封装格式(MP3 MP4 RMVB WAV)
2、需要认识的一些工具
2.1 码流分析工具 Elecard StreamEye Tools
2.2 视频格式分析工具 Elecard Video Format Analyzer
2.3 YUV Player
2.4 PCM 查看编辑工具 Adobe Audition 3.0
3、主流的开源项目
•Ffmpeg
•VlC
•mplayer
•ijkplayer
4、练习
4.1 ffmpeg +sdl的练习
- ffmpeg yuv输出
- ffmpeg pcm输出
- ffmpeg 简单音频播放器
- ffmpeg 简单视频播放器
4.2 Android 的练习
4.2.1 yuv输出 视频转图片
4.2.2 pcm输出 音频
4.2.3 简单音频播放器
4.2.4 简单视频播放器
4.2.5 简单音视频播放器
4.3 编解码练习
4.3.1 avi 格式剪切
4.3.2 书写一个dvi解码器
4.4 播放流程练习
4.4.1 书写一个MP3 分离器
4.4.2 书写一个MP4 分离器
5、Android中的练习
5.1 acc解码器(软件解码的书写)
5.2 最简单播放器
二、Android 音视频播放流程(基于Android7.0)
1、简介
(Nuplayer awesome 等发展流程) opencore awesomeplayer nuplayer 不稳定,各个厂商改动的代码不一致,导出现的问题也比较多 代码目录
frameworks\av\media\libmedia(大多处于客户端进程)
frameworks\av\media\libmediaplayerservice
frameworks\av\media\libstagefright (7.0的变动)
2、Nuplayer 播放流程
2.1 启动
2.1.1 mediaserver进程的启动(MediaPlayerService)
2.1.2 media.extractor进程的启动
2.1.3 media.codec进程的启动
2.1.4 audioserver 进程的启动
2.1.5 相关进程简介mediadrmserver cameraserver surfaceflinger
2.2.1 MediaPlayer的创建
2.2.2 MediaPlayer的setDataSource流程
2.2.3 MediaPlayer的prepare流程
2.2.4 MediaPlayer的start流程
2.2.5 MediaPlayer的视频数据输出
2.2.6 MediaPlayer的音频数据输出
2.2.7 MediaPlayer的音视频同步策略
2.2.8 MediaPlayer的消息处理
2.2.8.1 Nuplayer 内部消息处理
2.2.8.2 MediaPlayer 上层消息返回
2.2.9 MediaPlayer的关闭和断开
2.2.9.1 stop和pause
2.2.9.2 release和disconnect
3、AudioFlinger 输出流程(几个track 类继承关系 和协调处理关系)
4、Acodec的解码流程
5、AudioRecord 流程
三、Android 音频输出AudioPolicy路由策略(基于Android7.0)
1、本章简介(通过几个流程认识路由的策略)
2、AudioPolicyService 的创建
3、设置音量流程
4、插拔耳机流程
四、Android 媒体扫描(MediaScaner)流程分析
1、简介 (指出难处和市场难处和不足)
2、启动分析
3、扫描流程
4、mtp流程简析
五、总结进程间关系
5.1 各个进程的启动
5.2 Android音视频各个服务和进程间关系
六、深入音视频学习
6.1 深入理解解码器
6.2 深入理解分离器
6.3 了解下网络流的播放
6.4 AudioTrack的内存共享机制
6.5 变速变调的学习
6.6 seek流程
七、Android 媒体扫描优化
目前相关的文章
Android中间层分析2.【media】音视频基础知识-1概述
Android中间层分析2.【media】音视频基础知识-2工具
Android中间层分析2.【media】音视频基础知识-3开源项目
Android中间层分析2.【media】音视频基础知识-4.ffmpeg pcm输出
Android中间层分析2.【media】音视频基础知识-5.ffmpeg yuv输出
Android中间层分析2.【media】音视频基础知识-6.ffmpeg 简单视频播放器
Android中间层分析2.【media】音视频基础知识-7.ffmpeg 简单音频播放器
Android中间层分析2.【media】音视频基础知识-8、Android最简单的音频播放器
Android中间层分析2.【media】音视频基础知识-9、Android最简单的视频播放器
Android中间层分析2.【media】音视频基础知识-10、Android自制简单音视频播放器
Android中间层分析2.【media】Android 音视频播放流程-1.简介
Android中间层分析2.【media】Android 音视频播放流程-2.nuplayer的启动
Android中间层分析2.【media】Android 音视频播放流程-3.MediaPlayer的创建
Android中间层分析2.【media】Android 音视频播放流程-4.MediaPlayer的setDataSource流程