在?直播?中有提到幾個(gè)不錯(cuò)的開(kāi)源項(xiàng)目讯屈,這里再重點(diǎn)推薦一下:
目前倾贰,市面上關(guān)于音視頻學(xué)習(xí)的相關(guān)書(shū)籍并不多涡上,而且即使看了書(shū)籍學(xué)了理論甲锡,最終還是要回歸到代碼上來(lái)媚送。
畢竟 IT 行業(yè)實(shí)踐性要求高中燥,強(qiáng)調(diào)動(dòng)手能力,音視頻這方面就更得多操作和探索了塘偎。
推薦下面幾個(gè)項(xiàng)目會(huì)各有側(cè)重疗涉,分別涵蓋了 Android 音視頻錄制 API 、OpenGL 渲染和綜合運(yùn)用的例子吟秩。
GPUImage
Github 地址:
https://github.com/cats-oss/android-gpuimage
GPUImage 毫無(wú)疑問(wèn)是音視頻項(xiàng)目里面必讀工程了咱扣,它的側(cè)重點(diǎn)在于渲染方面。
有些公司的招聘要求上可能都會(huì)寫(xiě)明熟悉 GPUImage涵防,重要性可見(jiàn)一斑闹伪。
通過(guò)閱讀 GPUImage 的源碼,能夠讓你掌握 OpenGL 的渲染以及渲染鏈的搭建壮池,同時(shí)工程里面很多特效 Shader 代碼偏瓤,通過(guò)閱讀和實(shí)踐這些 Shader 代碼,能夠讓你掌握初步的 Shader 編寫(xiě)能力椰憋。
比如常見(jiàn)的濾鏡效果厅克,在 GPUImage 就有現(xiàn)成的代碼例子,這一點(diǎn)在我的直播中也有講到橙依。有興趣的可以翻閱視頻证舟,掌握常見(jiàn)濾鏡效果的代碼編寫(xiě)。
如果需要 GPUImage 相關(guān)的源碼分析文檔窗骑,也可以參考我之前寫(xiě)過(guò)的一篇文章:
AudioVideoRecordingSample
Github 地址
https://github.com/saki4510t/AudioVideoRecordingSample
此項(xiàng)目的側(cè)重點(diǎn)在于 Android 音視頻相關(guān) API 的使用女责,尤其是在 錄制和編碼方面的。
該項(xiàng)目運(yùn)行后能夠?qū)?Camera 采集的視頻和音頻內(nèi)容編碼成一個(gè) MP4 文件创译。
這其中用到了 MediaCodec 做編碼抵知,用到了 MediaMuxer 將音頻和視頻混合。
這樣的一個(gè)完整示例對(duì)于掌握 Android 上音視頻相關(guān) API 幫忙非常大,因?yàn)樗軌虺晒φ_運(yùn)行辛藻,而且可以通過(guò)去修改其源碼來(lái)做自己的實(shí)驗(yàn)碘橘,驗(yàn)證自己對(duì)于 API 的理解和掌握。
當(dāng)你能夠熟練掌握其內(nèi)容吱肌,或者你就可以試著更進(jìn)一步痘拆,嘗試用 FFmpeg 做音視頻的編碼和混合,實(shí)現(xiàn)和 Android 音視頻 API 一樣的功能氮墨。
Grafika
Github 地址
https://github.com/google/grafika
此項(xiàng)目是 Google 提供的一個(gè)非官方的項(xiàng)目纺蛆,它的側(cè)重點(diǎn)在于將 OpenGL 與 Android 音視頻 API 綜合運(yùn)用。
它包含了很多個(gè)完整小示例规揪,比如如何使用 TextureView 顯示 OpenGL 內(nèi)容桥氏、使用三種方式進(jìn)行 OpenGL 內(nèi)容的錄制、如何進(jìn)行硬編碼操作等猛铅。
通過(guò)閱讀這些例子字支,能夠讓你掌握更多的技巧,把前面學(xué)會(huì)的 OpenGL 和 Android 音視頻 API 更靈活運(yùn)用了奸忽,進(jìn)一步加深理解堕伪。
甚至有些例子都可以用到項(xiàng)目早期需求中去的,比如如何進(jìn)行 EGL 的封裝栗菜、渲染線(xiàn)程與主線(xiàn)程的分離欠雌。
另外,以上三個(gè)例子都會(huì)包含 Camera 相關(guān)的操作疙筹,比如如何將 Camera 內(nèi)容展示到 SurfaceView 富俄、TextureView 上,如何進(jìn)行 Camera 拍攝等而咆。