推薦幾個堪稱教科書級別的 Android 音視頻入門項目

直播 中有提到幾個不錯的開源項目,這裏再重點推薦一下:android

目前,市面上關於音視頻學習的相關書籍並很少,並且即便看了書籍學了理論,最終仍是要回歸到代碼上來。git

畢竟 IT 行業實踐性要求高,強調動手能力,音視頻這方面就更得多操做和探索了。github

推薦下面幾個項目會各有側重,分別涵蓋了 Android 音視頻錄製 API 、OpenGL 渲染和綜合運用的例子。ide

  • GPUImage

Github 地址:源碼分析

https://github.com/cats-oss/a...

GPUImage 毫無疑問是音視頻項目裏面必讀工程了,它的側重點在於渲染方面。學習

有些公司的招聘要求上可能都會寫明熟悉GPUImage ,重要性可見一斑。優化

經過閱讀 GPUImage 的源碼,可以讓你掌握 OpenGL 的渲染以及渲染鏈的搭建,同時工程裏面不少特效 Shader 代碼,經過閱讀和實踐這些 Shader 代碼,可以讓你掌握初步的 Shader 編寫能力。ui

好比常見的濾鏡效果,在 GPUImage 就有現成的代碼例子,這一點在個人直播中也有講到。有興趣的能夠翻閱視頻,掌握常見濾鏡效果的代碼編寫。google

若是須要 GPUImage 相關的源碼分析文檔,也能夠參考我以前寫過的一篇文章: 編碼

OpenGL 之 GPUImage 源碼分析

  • AudioVideoRecordingSample

Github 地址

https://github.com/saki4510t/...

此項目的側重點在於 Android 音視頻相關 API 的使用,尤爲是在 錄製和編碼方面的。

該項目運行後可以將 Camera 採集的視頻和音頻內容編碼成一個 MP4 文件。

這其中用到了 MediaCodec 作編碼,用到了 MediaMuxer 將音頻和視頻混合。

這樣的一個完整示例對於掌握 Android 上音視頻相關 API 幫忙很是大,由於它可以成功正確運行,並且能夠經過去修改其源碼來作本身的實驗,驗證本身對於 API 的理解和掌握。

當你可以熟練掌握其內容,或者你就能夠試着更進一步,嘗試用 FFmpeg 作音視頻的編碼和混合,實現和 Android 音視頻 API 同樣的功能。

  • Grafika

Github 地址

https://github.com/google/gra...

此項目是 Google 提供的一個非官方的項目,它的側重點在於將 OpenGL 與 Android 音視頻 API 綜合運用。

它包含了不少個完整小示例,好比如何使用 TextureView 顯示 OpenGL 內容、使用三種方式進行 OpenGL 內容的錄製、如何進行硬編碼操做等。

經過閱讀這些例子,可以讓你掌握更多的技巧,把前面學會的 OpenGL 和 Android 音視頻 API 更靈活運用了,進一步加深理解。

甚至有些例子均可以用到項目早期需求中去的,好比如何進行 EGL 的封裝、渲染線程與主線程的分離。

另外,以上三個例子都會包含 Camera 相關的操做,好比如何將 Camera 內容展現到 SurfaceView 、TextureView 上,如何進行 Camera 拍攝等。

最後

以前這三個項目堪稱教科學書級別的,不是沒有理由的。至少我都源碼閱讀了兩邊以上。

第一次閱讀的時候會以爲 " 嗯,明白怎麼回事了 ",等到項目實踐了,須要本身從頭搞一遍,這時再回頭看,會有新的感悟 "哦,原來要這樣設計呀" ,等到更熟練的時候,在來看,可能就會以爲 "咦,這塊能優化一波了"。

以上,但願對於想從事音視頻開發的你,也可以看看上面幾個項目源碼,學習到更多技巧,共同進步。

相關文章
相關標籤/搜索