2013.03.19——— android 音视频编解码个人见解

参考:[url]http://www.erpgear.com/2012/0801/2456.html [/url]

1、android提供的音视频编码只有 AMR-NB(nb是窄频)和H.263
2、android虽然支持gif的解码,只能用mediaplay来播放,但是效果不好
3、android不支持flv的解码
4、AudioTrack只能播放pcm编码的数据,MediaPlayer可以播放MP3,AAC,WAV,OGG,MIDI等
事实上,两种本质上是没啥区别的,MediaPlayer在播放音频时,在framework层还是会创建AudioTrack,
把解码后的PCM数据传递给AudioTrack,最后由AudioFlinger进行混音,传递音频给硬件播放出来。
利用AudioTrack播放只是跳过 Mediaplayer的解码部分而已。Mediaplayer的解码核心部分是基于OpenCORE 来实现的,
支持通用的音视频和图像格式,codec使用的是OpenMAX接口来进行扩展。因此使用audiotrack播放mp3文件的话,要自己加入 一个音频解码器,如libmad。
否则只能播放PCM数据,如大多数WAV格式的音频文件。
5、输出文件格式就相当于一个容器,具体采用什么编码需要指定编码格式。编码一样可能输出格式不一样,输出格式一样其编码方式可能不一样。
6、硬编码:通过调用Android系统自带的Camera录制视频,实际上是调用了底层的高清编码硬件模块,也即显卡,不使用CPU,速度快
软编码:使用CPU进行编码,如常见C/C++代码,一般编译生成的二进制都是的,速度相对较慢。例如使用Android NDK编译H264生成so库,编写jni接口,再使用java调用so库。
7、视频数据有两种yuv和rgb,yuv是rgb大小的一般,所以一般用于数据传输,个人认为 视频文件格式经过解码后 都是以rgb来播放的,所谓的视频播放 就是一帧一帧图像
例如,一个avi文件,经过文件格式解析,得到h264编码流,然后经过h264解码,得到yuv数据,然后转换为rgb,进行播放
8、以一个MP3播放器为例,从功能的角度就是将一个mp3格式的文件作为播放器的输入,将声音从播放设备输出。从实现的角度,MP3播放器经过了一下的阶段:MP3格式的文件解析、MP3编码流的解码、PCM输出的播放。

更多相关文章

  1. Android Framework中添加AIDL文件编译
  2. Android布局文件layout.xml的一些属性值
  3. Android的xml文件中@、@android:type、@*、?、@+的含义和区别
  4. Android布局文件中常用的属性
  5. Android工具箱之文件目录
  6. android布局文件中各属性所代表的意义
  7. Android中资源文件的Shape使用总结
  8. 【魔幻塔防】60关配置文件

随机推荐

  1. 攻击JavaWeb应用[4]-SQL注入[2]
  2. 使用 Sun SPOT 作为构建监视器
  3. Java的单元测试(Junit)
  4. Java并发编程(四)Java内存模型
  5. Java微信开发_Exception_01_The type org
  6. Java基础之数组
  7. JAVA实现 springMVC方式的微信接入、实现
  8. 【Java_SSM】(四)Eclipse中通过maven引入ja
  9. 20162305 实验二 Java面向对象程序设计
  10. jsp权限菜单绑定的基本实现