1. 音視頻開發包括哪些內容
雖然一篇文章無法把音視頻開發的知識點都介紹清楚,但是大概的學習路線還是可以梳理一下的,我們先看看下面這張圖:
其實說白了,音視頻開發,就是要掌握影像、音頻、視頻的基礎知識,并且學會如何對它們進行采集、渲染、處理、傳輸等一系列的開發和應用,
- 采集:它解決的是,資料從哪里來的問題
- 渲染:它解決的是,資料怎么展現的問題
- 處理:它解決的是,資料怎么加工的問題
- 傳輸:它解決的是,資料怎么共享的問題
每一個門類,都可以深挖,衍生出一個又一個充滿技術挑戰的話題,比如:如何更高效地渲染畫面、如何提高音視頻的壓縮比,如何優化弱網下的音視頻資料傳輸等等,
其實,音視頻開發的技識訓累,也沒有那么難,帶著問題去 Google,帶著任務去實踐,一切都不是問題,我們就從上面說的 4 個方向,逐個探索一下,有哪些知識點,是要我們去了解和掌握的,
2.1 采集
采集,它解決的是,資料從哪里來的問題,那么,資料究竟從哪里來的呢 ?

其實無論在哪個平臺,影像、視頻最初都是來自攝像頭,而音頻最初都是來自麥克風,因此,做音視頻采集,就要掌握如下的技術知識:
1. 系統的攝像頭采集介面是什么,怎么用 ?
比如:
Windows:DirectShow
Linux:V4L2
Android:Camera
iOS:AVCaptureSession
2. 系統的攝像頭采集的引數怎么配置,都是什么含義 ?
比如:解析度、幀率、預覽方向、對焦、閃光燈 等
3. 系統的攝像頭輸出的影像/視頻資料,是什么格式,不同格式有什么區別 ?
比如:圖片:JPEG,視頻資料:NV21,NV12,I420 等
4. 系統的麥克風采集介面是什么,怎么用 ?
比如:
Windows:DirectShow
Linux:ALSA & OSS
Android:AudioRecord
iOS:Audio Unit
5. 系統的麥克風采集引數怎么配置,都是什么含義 ?
比如:采樣率,通道號,位寬 等
6. 系統的麥克風輸出的音頻資料,是什么格式?
比如:PCM
2.2 渲染
渲染,它解決的是,資料怎么展現的問題,那么,資料究竟怎么展現呢 ?

其實無論在哪個平臺,影像、視頻最終都是要繪制到視圖上面,而音頻最終都是要輸出到揚聲器,因此,做音視頻渲染,就要掌握如下的技術知識:
1. 系統提供了哪些 API 可以繪制一張圖片或者一幀 YUV 影像資料的 ?
比如:
Windows:DirectDraw, Direct3D, GDI,OpenGL 等
Linux: GDI, OpenGL 等
Android:ImageView,SurfaceView,TextureView,OpenGL 等
iOS: CoreGraphics,OpenGL 等
2. 系統提供了哪些 API 可以播放一個 mp3 或者 pcm 資料 ?
比如:
Windows:DirectSound 等
Linux:ALSA & OSS 等
Android:AudioTrack 等
iOS: AudioQueue 等
2.3 處理
處理,它解決的是,資料怎么加工的問題,那么,資料究竟可以怎么加工呢 ?
首先,我們看看影像/音視頻的資料可以做哪些加工 ?

其實無論在哪個平臺,影像和音視頻的加工,除了系統的 API,大多數都會依賴一些跨平臺的第三方庫的,通過掌握這些第三方庫的原理和使用方法,基本上就可以滿足日常音視頻處理作業了,這些庫包括但不限于:
1. 影像處理:OpenGL,OpenCV,libyuv,ffmpeg 等
2.視頻編解碼:x264,OpenH264,ffmpeg 等
3.音頻處理:speexdsp,ffmpeg 等
4.音頻編解碼:libfaac,opus,speex,ffmpeg 等
因此,學習和掌握這些第三方庫的使用,非常有必要,
2.4 傳輸
傳輸,它解決的是,資料怎么共享的問題,那么,資料究竟怎么共享呢 ?
共享,最重要的一點,就是協議,
互聯網之所以能夠如此蓬勃地發展,將整個世界都緊密聯系在一起,其實是離不開 W3C 這個委員會的巨大貢獻的,因為無論什么資料,要想在不同的國家、不同設備之間互聯互通,離不開 “標準”,有了 “標準”,大家就能互相讀懂對方,
因此,研究音視頻傳輸,其實就是在研究協議,具體有哪些協議呢 ?
1. 音視頻在傳輸前,怎么打包的,如:FLV,ts,mpeg4 等
2. 直播推流,有哪些常見的協議,如:RTMP,RSTP 等
3. 直播拉流,有哪些常見的協議,如:RTMP,HLS,HDL,RTSP 等
4. 基于 UDP 的協議有哪些?如:RTP/RTCP,QUIC 等
互聯網環境下的音視頻的傳輸,是一個非常有挑戰和價值的方向,為了解決弱網下的傳輸延時、卡頓,提高用戶體驗,整個業界都在不斷地進行著深入的探索和優化,
3.小結
音視頻的路很長,更多的還是要靠自己去學習和實踐,帶著追求極致的精神去探索和優化,最終,大家都能快速成長,成為真正的行業專家!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/155348.html
標籤:其他
