目錄
- 為什么要學(xué)習(xí)音視頻?
- 如何學(xué)習(xí)系統(tǒng)性音視頻?
- 音視頻相關(guān)的資料
- 學(xué)習(xí)實踐的輸出文章分類聚合
- 收獲
最近有朋友問想學(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ā)上道”,竟然還沒有具體邁出第一步。和自己認真對話之后想清楚了兩個問題
- 為什么要學(xué)習(xí)音視頻
- 如何系統(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í)
- 音視頻 android基礎(chǔ)
- OpenGL ES
- JNI&NDK系列
- FFmpeg、x264
- 開源項目(exoplayer、ijkplayer、gpuimage)
- 后續(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ā)之旅(二)AudioRecord錄制PCM音頻
音視頻開發(fā)之旅(三)AudioTrack播放PCM音頻
音視頻開發(fā)之旅(五)MediaExtractor MediaMuxer 實現(xiàn)視頻的解封裝與合成
音視頻開發(fā)之旅(六)MediaCodec硬編解流程與實踐
階段二: OpenGL ES
音視頻開發(fā)之旅(八)GLSL及Shader的渲染流程
音視頻開發(fā)之旅(九) OpenGL ES 繪制平面圖形
音視頻開發(fā)之旅(十) GLSurfaceView源碼解析&EGL環(huán)境
音視頻開發(fā)之旅(11) OpenGL ES矩陣變換與坐標(biāo)系統(tǒng)
音視頻開發(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ā)之旅(26) 算法系列-選擇、插入排序以及STL中sort的實現(xiàn)
階段四 : FFmpeg
后續(xù)系列文章持續(xù)輸出中,歡迎關(guān)注公眾號“音視頻開發(fā)之旅”,一起學(xué)習(xí)成長。
五、收獲
通過互動,得知朋友的困擾,也幫忙自己檢視和梳理自己
- 重新檢視了為什么要學(xué)習(xí)音視頻
- 學(xué)習(xí)音視頻的方法、資料
- 學(xué)習(xí)實踐的文章分類聚合梳理
感謝你的閱讀
下一篇我們學(xué)習(xí)實踐ffmpeg系列,歡迎關(guān)注公眾號“音視頻開發(fā)之旅”,一起學(xué)習(xí)成長。
歡迎交流