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

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

目前,市面上關(guān)于音視頻學(xué)習(xí)的相關(guān)書籍并不多,而且即使看了書籍學(xué)了理論,最終還是要回歸到代碼上來。

畢竟 IT 行業(yè)實踐性要求高,強(qiáng)調(diào)動手能力,音視頻這方面就更得多操作和探索了。

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

  • GPUImage

Github 地址:

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

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

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

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

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

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

OpenGL 之 GPUImage 源碼分析

  • AudioVideoRecordingSample

Github 地址

https://github.com/saki4510t/AudioVideoRecordingSample

此項目的側(cè)重點在于 Android 音視頻相關(guān) API 的使用,尤其是在 錄制和編碼方面的。

該項目運行后能夠?qū)?Camera 采集的視頻和音頻內(nèi)容編碼成一個 MP4 文件。

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

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

當(dāng)你能夠熟練掌握其內(nèi)容,或者你就可以試著更進(jìn)一步,嘗試用 FFmpeg 做音視頻的編碼和混合,實現(xiàn)和 Android 音視頻 API 一樣的功能。

  • Grafika

Github 地址

https://github.com/google/grafika

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

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

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

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

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

最后

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

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

以上,希望對于想從事音視頻開發(fā)的你,也能夠看看上面幾個項目源碼,學(xué)習(xí)到更多技巧,共同進(jìn)步。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容