音視頻開發(fā)之旅(32)-音視頻學(xué)習(xí)資料

目錄

  1. 為什么要學(xué)習(xí)音視頻?
  2. 如何學(xué)習(xí)系統(tǒng)性音視頻?
  3. 音視頻相關(guān)的資料
  4. 學(xué)習(xí)實踐的輸出文章分類聚合
  5. 收獲

最近有朋友問想學(xué)習(xí)音視頻,應(yīng)該怎么學(xué),有什么資料嗎?

這個問題也困擾我很久,幾年前就想開始音視頻相關(guān)的學(xué)習(xí),但是一直找不到門道,堅持不過兩周?;乜催@個系列文章,到目前寫了30+篇,雖還不敢說已入門,因為越學(xué)越發(fā)現(xiàn) 不會的知識、需要學(xué)的東西就越多。但為什么相比過去幾年的幾次嘗試,這次持續(xù)時間更長、不斷有文章輸出呢?
這篇文章就和對自己進行檢視反思,希望對想學(xué)習(xí)音視頻的朋友也有所幫助。

為什么要學(xué)習(xí)音視頻?

我是做android應(yīng)用開發(fā),android本身也是有很多需要深入學(xué)習(xí)的內(nèi)容,越是底層的、基礎(chǔ)的東西越是通用,比如說設(shè)計模式、數(shù)據(jù)結(jié)構(gòu)、算法、通信機制、多線程機制、JVM虛擬機等等。把上面這些內(nèi)容結(jié)合具體業(yè)務(wù)和場景學(xué)好應(yīng)用好,對自己的提升也是十分有裨益。我的一個學(xué)習(xí)榜樣就是在這方面有很深的認知和能力。

對于我個人而言,音視頻的情懷,4-5年前已經(jīng)埋下,當(dāng)時做了一款直播點播的體育類app,接觸到一些音視頻相關(guān)的知識,當(dāng)時還寫過一篇有頭無尾的文章[android音視頻點/直播模塊開發(fā)]: https://blog.csdn.net/u011570979/article/details/51205401,但是后面由于工作方向的外部原因,以及更重要的是自己認知不足,對音視頻的學(xué)習(xí)和發(fā)展道路還沒有比較強烈的渴望,就不了了之了。

在2020年國慶期間,重新檢視了下自己的規(guī)劃和年度目標(biāo),發(fā)現(xiàn)最重要的個人目標(biāo)“音視頻開發(fā)上道”,竟然還沒有具體邁出第一步。和自己認真對話之后想清楚了兩個問題

  1. 為什么要學(xué)習(xí)音視頻
  2. 如何系統(tǒng)性的學(xué)習(xí)音視頻
    然后就開始了這一系列的學(xué)習(xí)實踐,主要還是認知的提升、著眼長遠、系統(tǒng)性的思維。

隨著近些年以抖/快為代表的短視頻、以B站為代表的長視頻的快速發(fā)展,對16年左右比較火熱的直播進行了一次變化,但是還是在音視頻領(lǐng)域,我們來看下來在“Trustdata大數(shù)據(jù)”最新的數(shù)據(jù)



上述內(nèi)容來源于 [Trustdata大數(shù)據(jù)] : https://mp.weixin.qq.com/s/otGI_yvvF_Q0L2mDrhtxyg

通過上面的Top20排行榜,我們可以清晰的看到直接和音視頻相關(guān)的app有5個,更驚人的是這top20的app,幾乎都有音視頻相關(guān)的內(nèi)容,這就是行業(yè)現(xiàn)狀或者趨勢吧。

現(xiàn)在音視頻都已經(jīng)那么火了,現(xiàn)在學(xué)還有機會嗎?
右側(cè)追擊的理論同樣適用于我們的學(xué)習(xí)實踐。音視頻行業(yè)快速發(fā)展的底層是信息通信的越來越高效,芯片設(shè)備的越來要強大和智能。隨著5G、6G的應(yīng)用,相信未來音視頻不是什么發(fā)展方向,而是像水電一樣的基礎(chǔ)功能。也是基于這個認知的改變,讓自己堅信了音視頻這條發(fā)展的道路。

代碼引用[FFmpeg 音視頻開發(fā) 20 年]中的一段文字

下一個10年,技術(shù)還是那些技術(shù),主角或許從移動App,變成了AI,邊緣計算。如果不是xx戰(zhàn),今年海思的AI芯片,4T算力的可能會在下探到10個美金以下。芯片的大規(guī)模量產(chǎn),價格下降,會帶動行業(yè)新一輪變革。

軟件開發(fā)者,也會有相應(yīng)的全新的機會,音視頻,網(wǎng)絡(luò)通訊,OpenGL/ES 都是必須要掌握的,從事相關(guān)開發(fā),加上OpenCV, Tensorflow-lite. 深度學(xué)習(xí)基礎(chǔ)。 個人一點看法,僅供參考。

所以單純聊 FFmpeg 已經(jīng)沒有什么意義,聊點音視頻,數(shù)字圖像處理,網(wǎng)絡(luò)通訊,跟 FFmpeg 相關(guān)的,或許更有參考價值。FFmpeg 的未來在哪里? 一項技術(shù)只能在一個合適的時間段解決一個特定的問題。

編解碼都被硬件做了還需要軟件開發(fā)嗎?
編解碼無論硬解軟解代碼量都很少。幾十行代碼的事。在一個項目中占比很少。大量的代碼在于網(wǎng)絡(luò)通訊,圖像處理,軟件自身的邏輯等。

二、如何學(xué)習(xí)系統(tǒng)性音視頻?

項目管理的很重要的一環(huán)就是任務(wù)的拆解,然后逐步的實現(xiàn)。之前是想走捷徑,想一步就學(xué)成,哪有什么速成之術(shù),特別對于知識系統(tǒng)很龐大的體系,分布拆解、逐步學(xué)習(xí)實踐是非常重要的。
也是在2020年國慶期間,通過搜索資料結(jié)合自己的思考,逐步形成了如下5個階段的學(xué)習(xí)

  1. 音視頻 android基礎(chǔ)
  2. OpenGL ES
  3. JNI&NDK系列
  4. FFmpeg、x264
  5. 開源項目(exoplayer、ijkplayer、gpuimage)
  6. 后續(xù)待定(暫未加入)… 比如openCV、 webRTC

這些非常重要,這些階段是學(xué)習(xí)路上的關(guān)鍵節(jié)點,構(gòu)成了認知地圖,然后每個階段,去找對應(yīng)的資料再把任務(wù)拆解成子任務(wù),通過輸出倒逼輸入,不斷迭代自己的學(xué)習(xí)寫作系統(tǒng)。

三、音視頻相關(guān)的資料

3.1 圖書類

《音視頻開發(fā)進階指南》
《FFmpeg從入門到精通》
《OpenGL ES應(yīng)用開發(fā)實踐指南》
《OpenGL ES 3.0編程指南》
《OpenGL編程指南》
《計算機圖形學(xué)基礎(chǔ)(OpenGL版)》
《漫畫算法》
《編程珠璣》
《算法》
《Tinking in C++》

3.2 系統(tǒng)認知類

[FFmpeg 音視頻開發(fā) 20 年] : https://blog.csdn.net/chenchao_shenzhen/article/details/111532282?spm=1000.2115.3001.4373
[ Android 音視頻開發(fā)學(xué)習(xí)思路 ] : https://www.cnblogs.com/renhui/
[音視頻開發(fā)學(xué)習(xí)路線-字節(jié)流動] : https://mp.weixin.qq.com/s/u1MktZdId94bqoI-3DWosA

[Android 音視頻開發(fā)入門指南] : https://blog.51cto.com/ticktick/1956269
[從開發(fā)小白到音視頻專家] : https://blog.51cto.com/ticktick/2046899

[《ywl5320的專欄》]:https://blog.csdn.net/ywl5320

3.3 在線視頻資料

[音視頻開發(fā)工作經(jīng)驗分享] : https://www.bilibili.com/video/BV1p54y1X7fY

[計算機圖形學(xué)OPENGL入門] : https://www.bilibili.com/video/BV1px41197A5

[尚硅谷Java數(shù)據(jù)結(jié)構(gòu)與java算法(Java數(shù)據(jù)結(jié)構(gòu)與算法)] : https://www.bilibili.com/video/BV1E4411H73v

[【C語言描述】《數(shù)據(jù)結(jié)構(gòu)和算法》(小甲魚)] : https://www.bilibili.com/video/BV1jW411K7yg

[黑馬程序員匠心之作|C++教程從0到1入門編程,學(xué)習(xí)編程不再難] : https://www.bilibili.com/video/BV1et411b73Z

[Android設(shè)計進階篇-實戰(zhàn)NDK(中)] : https://www.bilibili.com/video/BV1Za4y1J7fQ

[基于FFmpeg+SDL的視頻播放器的制作——雷霄驊] : https://www.bilibili.com/video/BV14x411D7FD

四、寫文章分類聚合

對自己已寫的文章進行聚類,也放在[github]: https://github.com/ayyb1988/mediajourney上,方便后續(xù)更新,

階段一:andorid多媒體

音視頻開發(fā)之旅(一)三種方式繪制圖片

音視頻開發(fā)之旅(二)AudioRecord錄制PCM音頻

音視頻開發(fā)之旅(三)AudioTrack播放PCM音頻

音視頻開發(fā)之旅(四)Camera視頻采集

音視頻開發(fā)之旅(五)MediaExtractor MediaMuxer 實現(xiàn)視頻的解封裝與合成

音視頻開發(fā)之旅(六)MediaCodec硬編解流程與實踐

階段二: OpenGL ES

音視頻開發(fā)之旅(七) OpenGL ES 基本概念

音視頻開發(fā)之旅(八)GLSL及Shader的渲染流程

音視頻開發(fā)之旅(九) OpenGL ES 繪制平面圖形

音視頻開發(fā)之旅(十) GLSurfaceView源碼解析&EGL環(huán)境

音視頻開發(fā)之旅(11) OpenGL ES矩陣變換與坐標(biāo)系統(tǒng)

音視頻開發(fā)之旅(12) OpenGL ES之紋理

音視頻開發(fā)之旅(13) OpenGL ES 濾鏡 (篇一)

音視頻開發(fā)之旅(14) OpenGL ES 實時濾鏡

音視頻開發(fā)之旅(15) OpenGL ES粒子系統(tǒng) - 噴泉

音視頻開發(fā)之旅(16) OpenGL ES粒子效果-煙花爆炸

階段三: JNI&NDK

音視頻開發(fā)之旅(17) JNI與NDK的學(xué)習(xí)和使用

音視頻開發(fā)之旅(18) JNI - 引用類型、異常處理、函數(shù)注冊

音視頻開發(fā)之旅(19)NDK構(gòu)建方式 ndk-build與cmake

音視頻開發(fā)之旅(20) 指針、內(nèi)存模型、引用

音視頻開發(fā)之旅(21)運算符重載、繼承、多態(tài)、模版

音視頻開發(fā)之旅(22) STL 之 容器

子系列 算法

音視頻開發(fā)之旅(23) 算法系列 - 冒泡排序

音視頻開發(fā)之旅(24) 算法系列-快速排序

音視頻開發(fā)之旅(25) 算法系列-堆排序

音視頻開發(fā)之旅(26) 算法系列-選擇、插入排序以及STL中sort的實現(xiàn)

音視頻開發(fā)之旅(27) 算法序列 - 二叉查找樹

音視頻開發(fā)之旅(28) 算法序列 - 平衡二叉樹

音視頻開發(fā)之旅(29) 算法序列 - 散列表

階段四 : FFmpeg

音視頻開發(fā)之旅(30) -音視頻基礎(chǔ)知識

音視頻開發(fā)之旅(31) -FFMPEG常用命令

后續(xù)系列文章持續(xù)輸出中,歡迎關(guān)注公眾號“音視頻開發(fā)之旅”,一起學(xué)習(xí)成長。

五、收獲

通過互動,得知朋友的困擾,也幫忙自己檢視和梳理自己

  1. 重新檢視了為什么要學(xué)習(xí)音視頻
  2. 學(xué)習(xí)音視頻的方法、資料
  3. 學(xué)習(xí)實踐的文章分類聚合梳理

感謝你的閱讀

下一篇我們學(xué)習(xí)實踐ffmpeg系列,歡迎關(guān)注公眾號“音視頻開發(fā)之旅”,一起學(xué)習(xí)成長。

歡迎交流

最后編輯于
?著作權(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ù)。

相關(guān)閱讀更多精彩內(nèi)容

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