想接觸音頻、視頻的編碼以及相關的知識,不知有沒有一些歸納好的知識點?
一方面處於興趣,一方面出於新項目的一些需求,想學習下音頻,視頻的知識編碼,不止有沒有好的書籍,歸納好的知識點? 望指點一竅不通的我,給指條方向?or,有沒有公司在做這類服務??
我們先假設某人在音視頻方面是零基礎,也沒學過任何數字信號處理相關知識,數學基礎基本是高中水準,但是熟悉 C/C++ 開發,至少熟悉某一個平台下的編譯調試IDE。
著重研究兩個開源項目 ffmpeg 和 webRTC,主要看ffmpeg的視頻部分和webRTC的音頻部分。
首先,從視頻解碼入手,這個最簡單,調用 ffmpeg視頻解碼的基本代碼只有100行左右,具體可以參考 @雷霄驊 的blog,有詳細示例和說明。視頻解碼只要搞懂h.264就好了,80%+場景都是這個編碼格式了,了解基本的 H.264 的 sps pps NAL等文件格式概念,了解YUV圖像格式原理,了解YUV到RGB的轉換,這樣就可以做圖像渲染,可以實現一個簡單的視頻播放器。
然後,學習視頻編碼,建議從x264入手,一個簡單的調用x264的編碼代碼也不到100行。編碼比解碼複雜在於,解碼是不需要配置什麼參數的,而編碼有大量參數需要配置,初期只要了解幾個基本概念就好了,比如 幀速率, 常用流控方式 ABR CRF,GOP,I/B/P Frame分別是什麼意思。
音頻部分的編解碼和視頻差不多,初期只需要了解兩種編碼器EAAC+和Silk,了解 聲道,採樣率等概念,了解 Wave文件格式。可以做一個簡單音頻播放器。
音頻複雜的地方不是編解碼,而是音效,看下 webRTC里的 Audio Processing module,理解以下幾個概念,去噪NS,消回聲AEC,靜音檢測VAD,自動增益控制AGC,webRTC內置的這幾個演算法雖然不是最好的,但是可以解決90%+的問題了,值得學習下。
學到了這裡需要思考個問題了,自己是想走工程路線還是演算法路線,如果是演算法路線,那麼必須要去學數學了,數字信號處理背後是大量的數學基礎理論。如果是工程路線,那麼要去學習跨平台開發,學習多個平台下音視頻的採集,播放和處理,學習多平台下彙編語言優化。
音視頻是個水很深的領域,學一輩子都學不完,但這個領域有個好處,就是知識更新速度比較慢,學的東西不容易被淘汰,經驗的積累非常重要。謝邀。拿一兩個開源 codec 代碼來讀通。
大家都說的差不多了,我補充一個知識點,中間數據,音頻是wav,視頻是yuv,圖像是bmp,早點知道,可以早點上測試數據調試對照
多媒體技術基礎,李澤年寫的那本。這本是基礎書,可以先看。其他的就看視頻編解碼或者音頻編解碼的專門教材了。
你是學編解碼演算法還是編解碼器的用法?學演算法,先找編碼標準來看,再去研究x264,x264,libvpx,lame,fdkaac,opus等的代碼,前提是要有相關數學和信息科學功底學編解碼器的用法……這個自行搜索吧,至少得會--help吧
自己寫一個先 多破爛都沒關係 至少你能猜出來你自己需要哪些資料結構
看一下mp3的源代碼以及協議吧。
推薦閱讀:
※優酷插播廣告越來越長,除了開頭廣告,中間還插播,這樣的體驗還能吸引人嗎?
※《屌絲男士》火爆網路的原因是什麼?
※很久之前的電影,為什麼現在視頻類網站都要收費呢?
※愛奇藝是如何在視頻網站中崛起的?
※我們看視頻時有義務看廣告嗎?