Android 音視頻開發入門指南
最近收到很多網友通過郵件或者留言說想學習音視頻開發,該如何入門,我今天專門寫篇文章統一回復下吧。
音視頻這塊,目前的確沒有比較系統的教程或者書籍,網上的博客文章也都是比較零散的,希望我後面能擠出時間整一個專題詳細講一講~~目前的話,我先給出一個大的方向性的學習指南,希望對初學者有所幫助。
我一直相信帶著 “任務” 去學習和實踐,效率會高很多,因此我列出了一系列音視頻相關的 “開發任務”,從簡單到困難(當然,不一定非常嚴格和完美,部分任務先後可調整),大家在完成任務的過程中,遇到任何不懂的地方都要及時去 google,或者去請教身邊的大牛,不放過任何一個疑點,相信大家會很快就能把音視頻周邊相關知識積累起來。
《Android 音視頻從入門到提高 —— 任務列表》
1. 在 Android 平臺繪制一張圖片,使用至少 3 種不同的 API,ImageView,SurfaceView,自定義 View
2. 在 Android 平臺使用 AudioRecord 和 AudioTrack API 完成音頻 PCM 數據的采集和播放,並實現讀寫音頻 wav 文件
3. 在 Android 平臺使用 Camera API 進行視頻的采集,分別使用 SurfaceView、TextureView 來預覽 Camera 數據,取到 NV21 的數據回調
4. 學習 Android 平臺的 MediaExtractor 和 MediaMuxer API,知道如何解析和封裝 mp4 文件
5. 學習 Android 平臺 OpenGL ES API,了解 OpenGL 開發的基本流程,使用 OpenGL 繪制一個三角形
6. 學習 Android 平臺 OpenGL ES API,學習紋理繪制,能夠使用 OpenGL 顯示一張圖片
7. 學習 MediaCodec API,完成音頻 AAC 硬編、硬解
8. 學習 MediaCodec API,完成視頻 H.264 的硬編、硬解
9. 串聯整個音視頻錄制流程,完成音視頻的采集、編碼、封包成 mp4 輸出
10. 串聯整個音視頻播放流程,完成 mp4 的解析、音視頻的解碼、播放和渲染
11. 進一步學習 OpenGL,了解如何實現視頻的剪裁、旋轉、水印、濾鏡,並學習 OpenGL 高級特性,如:VBO,VAO,FBO 等等
12. 學習 Android 圖形圖像架構,能夠使用 GLSurfaceviw 繪制 Camera 預覽畫面
13. 深入研究音視頻相關的網絡協議,如 rtmp,hls,以及封包格式,如:flv,mp4
14. 深入學習一些音視頻領域的開源項目,如 webrtc,ffmpeg,ijkplayer,librtmp 等等
15. 將 ffmpeg 庫移植到 Android 平臺,結合上面積累的經驗,編寫一款簡易的音視頻播放器
16. 將 x264 庫移植到 Android 平臺,結合上面積累的經驗,完成視頻數據 H264 軟編功能
17. 將 librtmp 庫移植到 Android 平臺,結合上面積累的經驗,完成 Android RTMP 推流功能
18. 上面積累的經驗,做一款短視頻 APP,完成如:斷點拍攝、添加水印、本地轉碼、視頻剪輯、視頻拼接、MV 特效等功能
相信我,如果你認真把所有任務都完成了,你一定會成為音視頻人才招聘市場的香餑餑~~
下面是一些推薦的參考資料:
1. 《雷霄驊的專欄》:http://blog.csdn.net/leixiaohua1020
2. 《Android音頻開發》:http://ticktick.blog.51cto.com/823160/d-15
3. 《FFMPEG Tips》:http://ticktick.blog.51cto.com/823160/d-17
4. 《Learn OpenGL 中文》:https://learnopengl-cn.readthedocs.io/zh/latest/
5. 《Android Graphic 架構》:https://source.android.com/devices/graphics/
關於音視頻如何入門就介紹道這裏了,有任何疑問歡迎來信 [email protected] 交流,另外,歡迎關註我的新浪微博 @盧_俊 或者 微信公眾號 @Jhuster 獲取最新的文章和資訊。
本文出自 “Jhuster的專欄” 博客,請務必保留此出處http://ticktick.blog.51cto.com/823160/1956269
Android 音視頻開發入門指南