目前,市面上關於音視頻學習的相關書籍並不多,而且即使看了書籍學了理論,最終還是要回歸到代碼上來。
畢竟 IT 行業實踐性要求高,強調動手能力,音視頻這方面就更得多操作和探索了。
推薦下面幾個項目會各有側重,分別涵蓋了 Android 音視頻錄製 API 、OpenGL 渲染和綜合運用的例子。
Github 地址:
https://github.com/cats-oss/android-gpuimage
GPUImage 毫無疑問是音視頻項目裡面必讀工程了,它的側重點在於渲染方面。
有些公司的招聘要求上可能都會寫明熟悉GPUImage ,重要性可見一斑。
通過閱讀 GPUImage 的源碼,能夠讓你掌握 OpenGL 的渲染以及渲染鏈的搭建,同時工程裡面很多特效 Shader 代碼,通過閱讀和實踐這些 Shader 代碼,能夠讓你掌握初步的 Shader 編寫能力。
比如常見的濾鏡效果,在 GPUImage 就有現成的代碼例子,這一點在我的直播中也有講到。有興趣的可以翻閱視頻,掌握常見濾鏡效果的代碼編寫。
如果需要 GPUImage 相關的源碼分析文檔,也可以參考我之前寫過的一篇文章:
OpenGL 之 GPUImage 源碼分析
Github 地址
https://github.com/saki4510t/AudioVideoRecordingSample
此項目的側重點在於 Android 音視頻相關 API 的使用,尤其是在 錄製和編碼方面的。
該項目運行後能夠將 Camera 採集的視頻和音頻內容編碼成一個 MP4 文件。
這其中用到了 MediaCodec 做編碼,用到了 MediaMuxer 將音頻和視頻混合。
這樣的一個完整示例對於掌握 Android 上音視頻相關 API 幫忙非常大,因為它能夠成功正確運行,而且可以通過去修改其源碼來做自己的實驗,驗證自己對於 API 的理解和掌握。
當你能夠熟練掌握其內容,或者你就可以試着更進一步,嘗試用 FFmpeg 做音視頻的編碼和混合,實現和 Android 音視頻 API 一樣的功能。
Github 地址
https://github.com/google/grafika
此項目是 Google 提供的一個非官方的項目,它的側重點在於將 OpenGL 與 Android 音視頻 API 綜合運用。
它包含了很多個完整小示例,比如如何使用 TextureView 顯示 OpenGL 內容、使用三種方式進行 OpenGL 內容的錄製、如何進行硬編碼操作等。
通過閱讀這些例子,能夠讓你掌握更多的技巧,把前面學會的 OpenGL 和 Android 音視頻 API 更靈活運用了,進一步加深理解。
甚至有些例子都可以用到項目早期需求中去的,比如如何進行 EGL 的封裝、渲染線程與主線程的分離。
另外,以上三個例子都會包含 Camera 相關的操作,比如如何將 Camera 內容展示到 SurfaceView 、TextureView 上,如何進行 Camera 拍攝等。
最後之前這三個項目堪稱教科學書級別的,不是沒有理由的。至少我都源碼閱讀了兩邊以上。
第一次閱讀的時候會覺得 " 嗯,明白怎麼回事了 ",等到項目實踐了,需要自己從頭搞一遍,這時再回頭看,會有新的感悟 "哦,原來要這樣設計呀" ,等到更熟練的時候,在來看,可能就會覺得 "咦,這塊能優化一波了"。
以上,希望對於想從事音視頻開發的你,也能夠看看上面幾個項目源碼,學習到更多技巧,共同進步。
技術交流,歡迎加我微信:ezglumes ,拉你入技術交流群。
掃碼關注公眾號【音視頻開發進階】,一起學習多媒體音視頻開發~~~