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