標籤:入門 精通 提高 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 音視頻開發入門指南