—— 近年來熱門、吃香、值得學習的技術方向
?【推薦收藏】音視訊流媒體開發知識歸納導圖
?【熟讀兵法,搞定面試】50道音視訊經典面試題
?️【不想看文字,視訊更直接】國內國外大佬教學視訊
?【專案實戰應用,日後100%要用到】N個經典開源專案
本資源節選自:github.com/0voice/audio_video_stre... 更多內容請移步至github倉。
? 書籍
FFmpeg從入門到精通 百度網盤 提取碼:n4zj
視訊影像處理與效能優化 百度網盤提取碼:9kf0
數字影像與視訊處理 百度網盤提取碼:urz3
數字音視訊技術及應用 百度網盤提取碼:ezio
音視訊開發進階指南:基於Android與iOS平臺的實踐 百度網盤提取碼:vr7q
視訊編碼全形度詳解:AVS_China、H.264_MPEG-4_PART10、HEVC、VP6、DIRAC、VC-1 百度網盤提取碼:mj2d
FFMPEG - From Zero to Hero 百度網盤提取碼:0kiu
FFmpeg Basics 2012 百度網盤提取碼:migt
Handbook on SDP for Multimedia Session Negotiations SIP and WebRTC IP Telephony 百度網盤提取碼:ol6q
Learning WebRTC 百度網盤提取碼:85wo
Real-Time Communication with WebRTC 百度網盤提取碼:673p
? 面試題
1. 為什麼巨大的原始視訊可以編碼成很小的視訊呢?這其中的技術是什麼呢?
2. 怎麼做到直播秒開優化?
3. 直方圖在影像處理裡面最重要的作用是什麼?
4. 數字影像濾波有哪些方法?
5. 影像可以提取的特徵有哪些?
6. 衡量影像重建好壞的標準有哪些?怎樣計算?
7. AAC和PCM的區別?
8. H264儲存的兩個形態?
9. FFMPEG:圖片如何合成視訊?
10. 常見的音視訊格式有哪些?
11. 請指出“1080p”的意義?
12. 請解釋顏色的本質及其數字記錄原理,並說出幾個你所知道的色域。
13. 請解釋“向量圖”和“點陣圖”的區別?
14. 請從“光圈”“快門速度”“感光度”“白平衡”“景深”中任選2個進行敘述?
15. 視訊分量YUV的意義及數字化格式?
16. 在MPEG標準中影像型別有哪些?
17. 列舉一些音訊編解碼常用的實現方案?
18. 請敘述MPEG視訊基本碼流結構?
19. sps和pps的區別?
20. 請敘述AMR基本碼流結構?
21. 預測編碼的基本原理是什麼?
22. 說一說ffmpeg的資料結構?
23. 說一說AVFormatContext 和 AVInputFormat之間的關係?
24. 說一說AVFormatContext, AVStream和AVCodecContext之間的關係?
25. 說一說視訊拼接處理步驟?(細節處理,比如解析度大小不一,時間處理等等)
26. NV21如何轉換成I420?
27. DTS與PTS共同點?
28. 影響視訊清晰度的指標有哪些?
29. 編解碼處理時遇到什麼困難?
30. 如何秒開視訊?什麼是秒開視訊?
31. 如何降低延遲?如何保證流暢性?如何解決卡頓?解決網路抖動?
32. 需要把網路上一段視訊儲存下來(比如作為mp4 ), 請實現並說出方法(第一個視訊需要翻牆才能進)?
33. 需要把網路上一段語音儲存下來(比如作為mp3 ), 請實現並說出方法?
34. 為什麼要有YUV這種資料出來?(YUV相比RGB來說的優點)
35. H264/H265有什麼區別?
36. 視訊或者音訊傳輸,你會選擇TCP協議還是UDP協議?為什麼?
37. 平時說的軟解和硬解,具體是什麼?
38. 何為直播?何為點播?
39. 簡述推流、拉流的工作流程?
? 文章
? 開源框架
實時音視訊開源專案
實時音視訊應用共包括幾個環節:採集、編碼、前後處理、傳輸、解碼、緩衝、渲染等很多環節。每一個細分環節,還有更細分的技術模組。 比如,前後處理環節有美顏、濾鏡、回聲消除、噪聲抑制等,採集有麥克風陣列等,編解碼有VP8、VP9、H.264、H.265等。
採集->前處理編碼->傳輸->解碼後處理->渲染
實時音視訊開源專案思維導圖
編解碼開源專案
- WebRTC
地址:webrtc.org
WebRTC實現了基於網頁的視訊會議,標準是WHATWG 協議,目的是通過瀏覽器提供簡單的javascript就可以達到實時通訊(Real-Time Communications (RTC))能力。WebRTC提供了視訊會議的核心技術,包括音視訊的採集、編解碼、網路傳輸、顯示等功能,並且還支援跨平臺:windows,linux,mac,android。
- H.264
H.264是ITU(International Telecommunication Union,國際通訊聯盟)和MPEG(Motion Picture Experts Group,運動影像專家組)聯合制定的視訊編碼標準。而x264是一個開源的H.264/MPEG-4 AVC視訊編碼函式庫,是最好的有損視訊編碼器之一。
- FFmpeg
地址:ffmpeg.org
FFmpeg是一套可以用來記錄、轉換數字音訊、視訊,並能將其轉化為流的開源計算機程式。採用LGPL或GPL許可證。它提供了錄製、轉換以及流化音視訊的完整解決方案。FFmpeg提供了編碼、解碼、轉換、封裝等功能,以及剪裁、縮放、色域等後期處理。
- ijkplayer
ijkplayer 是一個基於 ffplay 的輕量級 Android/iOS 視訊播放器。實現了跨平臺功能,API易於整合;編譯配置可裁剪,方便控制安裝包大小;支援硬體加速解碼,更加省電;提供Android平臺下應用彈幕整合的解決方案。
- JSMpeg
地址:jsmpeg.com
JSMpeg is a Video Player written in JavaScript. It consists of an MPEG-TS Demuxer, WebAssembly MPEG1 Video & MP2 Audio Decoders, WebGL & Canvas2D Renderers and WebAudio Sound Output. JSMpeg can load static files via Ajax and allows low latency streaming (~50ms) via WebSocktes.
- Opus
地址:opus.nlpl.eu
Opus是一個有損聲音編碼的格式,由Xiph.Org基金會開發,之後由IETF(網際網路工程任務組)進行標準化,目標是希望用單一格式包含聲音和語音,取代Speex和Vorbis,且適用於網路上低延遲的即時聲音傳輸,標準格式定義於RFC 6716檔案。Opus格式是一個開放格式,使用上沒有任何專利或限制。
- live555
服務端開源專案
- jitsi
地址:jitsi/jitsi
Jitsi是一個音訊/視訊和聊天通訊器,它支援SIP、XMPP/Jabber、IRC和許多其他有用的特性。
- JsSIP
地址:jssip.net
JsSIP是一個簡單易用的JavaScript庫,它利用SIP和WebRTC的最新發展,在任何網站上提供全功能的SIP端點。通過JsSIP ,只要幾行程式碼,任何網站都可以通過音訊,視訊等獲得實時通訊功能。
- SRS
SRS定位是運營級的網際網路直播伺服器叢集,追求更好的概念完整性和最簡單實現的程式碼。SRS提供了豐富的接入方案將RTMP流接入SRS,包括推送RTMP到SRS、推送RTSP/UDP/FLV到SRS、拉取流到SRS。SRS還支援將接入的RTMP流進行各種變換,譬如將RTMP流轉碼、流截圖、轉發給其他伺服器、轉封裝成HTTP-FLV流、轉封裝成HLS、轉封裝成HDS、錄製成FLV。SRS包含支大規模叢集如CDN業務的關鍵特性,譬如RTMP多級叢集、源站叢集、VHOST虛擬伺服器、無中斷服務Reload、HTTP-FLV叢集、Kafka對接。此外,SRS還提供豐富的應用介面,包括HTTP回撥、安全策略Security、HTTP API介面、RTMP測速。
- JRTPLIB
地址:j0r1/JRTPLIB
jrtplib是一個基於C++、物件導向的RTP封裝庫, jrtplib支援定義於RFC3550中的RTP協議,它使得傳送和接收RTP報文變得異常簡單,使用者不用擔心SSRC衝突,也不用考慮如何傳輸RTCP資料,因為RTCP功能完全在內部實現。
- OPAL
地址:opalvoip
openphone抽象庫(OPAL)是一個c++多平臺、多協議的庫,用於IP和其他網路上的傳真、視訊和語音。還包括可移植工具庫(PTLib),這是一個c++多平臺抽象庫。
- Kurento
Kurento 是一個WebRTC流媒體伺服器以及一些客戶端API,開發WWW及智慧手機平臺的高階視訊應用就變得更加容易。可以利用Kurento開發的應用型別包括,視訊會議,音視訊廣播,音視訊錄製、轉碼等。
- Janus
? 視訊
國外大神
國內大佬
本資源節選自:github.com/0voice/audio_video_stre... 更多內容請移步至github倉。
? 業界大神
劉岐:FFmpeg官方程式碼維護者之一,十餘年一線技術研發與技術管理經驗,人稱“大師兄”。現任職於OnVideo公司,擔任CTO,公司聯合創立人,負責線上音視訊雲編輯與創作平臺的開發和建設。曾任職藍汛、高升、金山雲等公司,擔任視訊部門架構師及技術專家。
趙文傑:擅長音視訊編解碼和渲染技術,客戶端技術專家,開源流媒體伺服器SRS開發者之一,現任好未來網校事業部高階架構師一職,負責端開發。
廖慶富:主要從事音視訊驅動,多媒體中介軟體,流媒體伺服器的高階開發,主導開發過即時通訊+音視訊通話的大型專案。曾就職於聯發科,現任職於零聲教育,資深音視訊講師。主講WebRTC,ffmpeg,流媒體。
雷霄驊:兩屆CSDN部落格之星、微軟MVP。主要從事與廣播電視有關的視音訊技術的研究。包括視音訊質量評價,視音訊編解碼,流媒體,媒資檢索等。
慄偉:資深音視訊技術專家,曾任職於中科院計算所、CC視訊,任職期間利用WebRTC技術開發了直播、線上課堂、視訊會議等商業產品,併發使用者數達到500萬。開源社群的積極參與者,在GitHub上開源了視訊會議專案WiLearning,免費供中小企業使用。
楊成立:阿里雲RTC伺服器團隊負責人。負責中國最大CDN藍汛科技流媒體分發系統開發專案。主導研發轉碼、P2P、流媒體伺服器, 開源專案SRS主要開發者之一。
? 實踐專案
音視訊通話專案
實現了多人語音/多人視訊專案, 房間號Id一致,使用者Id不一致,即可實現多人語音/多人視訊。
Android/iOS 視訊播放器
ijkplayer 是一個基於 ffplay 的輕量級 Android/iOS 視訊播放器。實現了跨平臺功能,API易於整合;編譯配置可裁剪,方便控制安裝包大小;支援硬體加速解碼,更加省電;提供Android平臺下應用彈幕整合的解決方案。
仿網易雲音樂安卓版客戶端
仿網易雲音樂 安卓版,netease android,音樂播放器 線上 下載。
Timber
Timber是一個設計漂亮,功能完善,Material Design風格的音樂播放器。
WebRTC入門專案
WebRTC初學者的啟動演示,包括一個基於Socket.IO的簡單訊號伺服器,以及一些客戶端演示Web/Android/IOS/Windows平臺。 WebRTC入門專案部署步驟
getStats
使用WebRTC getstats APL返回對等連線狀態的微小JavaScript庫,如頻寬使用、資料包丟失、本地)遠端IP地址和埠、連線型別等。
MPlayer
跨平臺的視訊播放器,可在Linux和其他類Unix系統、Windows及Mac OS X系統使用。
KxMovie
IOS平臺基於FFMPEG播放器
Vitamio
Android/IOS平臺上的多媒體框架,帶有硬體加速解碼和渲染.
YUV2RGB
YUV轉RGB.
TSDemux
將TS流解碼為PES或ES.(下載這個原始碼需要FQ)
VLC
跨平臺的視訊播放器。現在也有安卓版本。也可以作為流媒體伺服器。
FFDshow
免費的編解碼軟體,基於windows平臺。原因就是directshow就是微軟開發的,只能用於windows平臺。
PlayerSDK(Android平臺)
這是一個專注音視訊播放器的庫,目前還在不斷優化中。
VideoDownloader(Android平臺)
視訊下載SDK功能。
MediaSDK(Android平臺)
這是一個專注音視訊邊下邊播的庫。
本資源節選自:github.com/0voice/audio_video_stre... 更多內容請移步至github倉。
本作品採用《CC 協議》,轉載必須註明作者和本文連結