多媒体编程
- 文本、图片、音频、视频
图片
- 图片在计算机中的大小
- 图片的总大小 = 图片的总像素 * 每个像素占用的大小
- 单色位图:只能表示2种颜色
- 使用两个数字:0和1
- 使用一个长度为1的二进制数字就可以表示了
- 每个像素占用1/8个字节
- 16色位图:能表示16种颜色
- 需要16个数字:0-15,0000 - 1111
- 使用一个长度为4的二进制数组就可以表示了
- 每个像素占用1/2个字节
- 256色位图:能表示256种颜色
- 需要256个数字:0 - 255,0000 0000 - 1111 1111
- 使用一个长度为8的二进制数字
- 每个像素占用1个字节
- 24位位图:
- 每个像素占用24位,也就是3个字节,所在叫24位位图
- R:0-255,需要一个长度为8的二进制数字,占用1个字节
- G:0-255,需要一个长度为8的二进制数字,占用1个字节
- B:0-255,需要一个长度为8的二进制数字,占用1个字节
加载大图片
- 计算机把图片所有像素信息全部解析出来,保存至内存
- Android保存图片像素信息,是用ARGB保存
- 手机屏幕320*480,总像素:153600
- 图片宽高2400*3200,总像素7680000
- 2400 / 320 = 7
- 3200 / 480 = 6
创建图片副本
- 在内存中创建一个图片的拷贝
保存图片
- SD每次准备的时候,系统其实是遍历sd卡所有文件,系统会把所有的多媒体文件,都在MediaStore数据库中生成一个索引,数据库中保存了文件的文件名、路径、大小、长度和艺术家
- 图库、音乐、视频程序每次启动时,其实不会去遍历sd卡寻找多媒体文件,而是直接从MediaStore数据库中读取多媒体文件,通过库中的索引找到对应的多媒体文件后,把文件显示在界面
SurfaceView
- 双缓冲技术
- 重量级组件
- 只要不可见,就不会创建,可见时,才会创建
- 只要不可见,就会销毁
FFMPEG
- 开源免费的音视频编解码器
Vitamio
- 封装了FFMPEG的视频播放框架
- 对外提供的api全部都是javaApi