http://www.chengxuyuans.com/Android/53765.html
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輸出的播放。