我們先假設某人在音視頻方面是零基礎,也沒學過任何數字信號處理相關知識,數學基礎基本是高中水準,但是熟悉 C/C++ 開發,至少熟悉某一個平臺下的編譯除錯IDE,
著重研究兩個開源專案 ffmpeg 和 webRTC,主要看ffmpeg的視頻部分和webRTC的音頻部分,
首先,從視頻解碼入手,這個最簡單,呼叫 ffmpeg視頻解碼的基本代碼只有100行左右,視頻解碼只要搞懂h.264就好了,80%+場景都是這個編碼格式了,了解基本的 H.264 的 sps pps NAL等檔案格式概念,了解YUV影像格式原理,了解YUV到RGB的轉換,這樣就可以做影像渲染,可以實作一個簡單的視頻播放器, (第一階段基本符合)
然后,學習視頻編碼,建議從x264入手,一個簡單的呼叫x264的編碼代碼也不到100行,編碼比解碼復雜在于,解碼是不需要配置什么引數的,而編碼有大量引數需要配置,初期只要了解幾個基本概念就好了,比如 幀速率, 常用流控方式 ABR CRF,GOP,I/B/P Frame分別是什么意思,(再次熟悉X264編碼)
音頻部分的編解碼和視頻差不多,初期只需要了解兩種編碼器EAAC+和Silk,了解 聲道,采樣率等概念,了解 Wave檔案格式,可以做一個簡單音頻播放器,(做一個音頻播放器)
音頻復雜的地方不是編解碼,而是音效,看下 webRTC里的 Audio Processing module,理解以下幾個概念,去噪NS,消回聲AEC,靜音檢測VAD,自動增益控制AGC,webRTC內置的這幾個演算法雖然不是最好的,但是可以解決90%+的問題了,值得學習下,(學習webrtc音頻處理)
學到了這里需要思考個問題了,自己是想走工程路線還是演算法路線,如果是演算法路線,那么必須要去學數學了,數字信號處理背后是大量的數學基礎理論,如果是工程路線,那么要去學習跨平臺開發,學習多個平臺下音視頻的采集,播放和處理,學習多平臺下匯編語言優化,(平臺相關)
音視頻是個水很深的領域,學一輩子都學不完,但這個領域有個好處,就是知識更新速度比較慢,學的東西不容易被淘汰,經驗的積累非常重要,
下面來看看音視頻開發的學習路線:
1.首先需要學習的是音視頻基礎知識
有些朋友對音視頻學習有些誤區,以為需要很多的理論基礎才開始去實踐,實際上大家只需要懂:
視頻:
- YUV格式
- RGB格式
- 幀率
- 解析度
- H264 I P B幀原理
音頻:
- PCM
- 采樣率
- 采樣格式
- 碼率
等這些基礎知識即可開啟音視頻學習的大門,

2.FFmpeg命令實戰
很多朋友也對FFmpeg的學習有誤區,一上來就擼各種ffmpeg api,其實不然,我們可以先從FFmpeg命令列入手,我們提供了一個《Windows FFmpeg命令列搭建》的檔案,從FFmpeg命令列入手可以讓我們更明白FFmpeg開源專案能夠做什么,

FFmpeg視頻學習資料+1035101242(VX同號)免費獲取、備注FFmpeg資料,音視頻高級開發qun:正在跳轉

3.FFmpeg專案實戰
使用FFmpeg可以做一個播放器和錄屏器


4.流媒體實戰
流媒體實戰建議大家學習的順序 RTMP->HLS->HTTP-FLV,有時間可以再學RTSP,為什么說有時間再學RTSP,是因為互聯網行業用RTSP的極少,


5.WebRTC中級開發

6.WebRTC高級開發

7.WebRTC SFU服務器開發

上面這些需要學習的內容大多是音視頻開發者們必會的技能,如果您覺得音視頻自學難,沒有學習的方向,大家可以對照上方的路線進行學習,
最后
在這里我也給大家分享一下音視頻開發的學習資料及學習路線圖,大家如果需要的話,可以點擊正在跳轉進群獲取

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/249831.html
標籤:其他
上一篇:智能車硬體入門(寒假第一篇)
