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


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

目前,市面上關於音視頻學習的相關書籍並不多,而且即使看了書籍學了理論,最終還是要回歸到代碼上來。

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

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

  • GPUImage

Github 地址:

https://github.com/cats-oss/android-gpuimage

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

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

通過閱讀 GPUImage 的源碼,能夠讓你掌握 OpenGL 的渲染以及渲染鏈的搭建,同時工程里面很多特效 Shader 代碼,通過閱讀和實踐這些 Shader 代碼,能夠讓你掌握初步的 Shader 編寫能力。

比如常見的濾鏡效果,在 GPUImage 就有現成的代碼例子,這一點在我的直播中也有講到。有興趣的可以翻閱視頻,掌握常見濾鏡效果的代碼編寫。

如果需要 GPUImage 相關的源碼分析文檔,也可以參考我之前寫過的一篇文章:

OpenGL 之 GPUImage 源碼分析

  • AudioVideoRecordingSample

Github 地址

https://github.com/saki4510t/AudioVideoRecordingSample

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

該項目運行后能夠將 Camera 采集的視頻和音頻內容編碼成一個 MP4 文件。

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

這樣的一個完整示例對於掌握 Android 上音視頻相關 API 幫忙非常大,因為它能夠成功正確運行,而且可以通過去修改其源碼來做自己的實驗,驗證自己對於 API 的理解和掌握。

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

  • Grafika

Github 地址

https://github.com/google/grafika

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

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

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

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

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

最后

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

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM