[學習資料]稀缺的音視訊,50道音視訊經典面試題,國內國外大佬教學視訊,N個經典開源專案,建議收藏

5suitaitou發表於2021-10-12

img

—— 近年來熱門、吃香、值得學習的技術方向

?【推薦收藏】音視訊流媒體開發知識歸納導圖

?【熟讀兵法,搞定面試】50道音視訊經典面試題

?️【不想看文字,視訊更直接】國內國外大佬教學視訊

?【專案實戰應用,日後100%要用到】N個經典開源專案

img

本資源節選自: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. 簡述推流、拉流的工作流程?

? 文章

  1. WebRTC 傳送方位元速率預估實現解析

  2. 位元速率控制基本概念

  3. Speex回聲消除程式碼分析

  4. 房間聲學原理與Schroeder混響演算法實現

  5. H264系列–壓縮編碼技術

  6. RTSP 媒體協議流的錄製方案及其覆蓋策略詳解

  7. 建立連線之ICE框架

  8. 流媒體協議介紹(rtp/rtcp/rtsp/rtmp/mms/hls)

  9. 音視訊同步原理及實現

  10. 直播概念和流程框架

  11. CDN在直播中的運用

  12. 常見音視訊編碼格式

  13. H.264官方軟體JM原始碼分析-編碼器lencod

  14. H.264官方軟體JM原始碼分析-解碼器ldecod

  15. Android 音視訊技術

  16. Web前端WebRTC攻略-媒體協商與SDP簡析

  17. 基於FFmpeg的AVfilter的例子-純淨版

  18. WebRTC 傳輸安全機制第二話:深入顯出 SRTP 協議

  19. WebRTC能給我帶來什麼?

  20. 視音訊資料處理:RGB、YUV畫素資料處理

  21. 視音訊資料處理:PCM音訊取樣資料處理

  22. 視音訊資料處理:H.264視訊碼流解析

  23. 視音訊資料處理:AAC音訊碼流解析

  24. 視音訊資料處理:FLV封裝格式解析

  25. 視音訊資料處理:UDP-RTP協議解析

  26. 如何生成mp4檔案

  27. ffmpeg濾鏡的基本使用

  28. webRTC是如何實現音視訊的錄製

  29. 音視訊同步演算法

  30. 房間聲學原理與Schroeder混響演算法實現

  31. 一個頻域語音降噪演算法實現及改進方法

  32. HEVC官方軟體HM原始碼分析-編碼器TAppEncoder

  33. HEVC官方軟體HM原始碼分析-解碼器TAppDecoder

  34. 音視訊編解碼常用知識點

  35. 微信小程式整合實時音視訊通話功能

  36. 視音訊編解碼技術零基礎學習方法

  37. RTSP協議學習

  38. HEVC碼流分析

  39. H.264簡單碼流分析

  40. MPEG2簡單碼流分析

  41. 視訊碼流分析工具

  42. H.264分析器

  43. FFmpeg架構之IO模組分析

  44. (Video and Audio Data Processing)UDP-RTP協議解析

  45. RTSP協議例項分析

  46. RTSP協議之TCP或UDP問題

  47. ffplay工具命令使用技巧

  48. VLC RTSP網路串流播放失敗

  49. RTMP協議詳解

  50. STUN 原理理解

? 開源框架

實時音視訊開源專案

實時音視訊應用共包括幾個環節:採集、編碼、前後處理、傳輸、解碼、緩衝、渲染等很多環節。每一個細分環節,還有更細分的技術模組。 比如,前後處理環節有美顏、濾鏡、回聲消除、噪聲抑制等,採集有麥克風陣列等,編解碼有VP8、VP9、H.264、H.265等。

採集->前處理編碼->傳輸->解碼後處理->渲染

實時音視訊開源專案思維導圖

img

編解碼開源專案

  • WebRTC

地址:webrtc.org

WebRTC實現了基於網頁的視訊會議,標準是WHATWG 協議,目的是通過瀏覽器提供簡單的javascript就可以達到實時通訊(Real-Time Communications (RTC))能力。WebRTC提供了視訊會議的核心技術,包括音視訊的採集、編解碼、網路傳輸、顯示等功能,並且還支援跨平臺:windows,linux,mac,android。

  • H.264

地址:www.linuxfromscratch.org

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

地址:bilibili/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

地址:www.live555.com

服務端開源專案

  • jitsi

地址:jitsi/jitsi

Jitsi是一個音訊/視訊和聊天通訊器,它支援SIP、XMPP/Jabber、IRC和許多其他有用的特性。

  • JsSIP

地址:jssip.net

JsSIP是一個簡單易用的JavaScript庫,它利用SIP和WebRTC的最新發展,在任何網站上提供全功能的SIP端點。通過JsSIP ,只要幾行程式碼,任何網站都可以通過音訊,視訊等獲得實時通訊功能。

  • SRS

地址:www.ossrs.net

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

地址:www.kurento.org

Kurento 是一個WebRTC流媒體伺服器以及一些客戶端API,開發WWW及智慧手機平臺的高階視訊應用就變得更加容易。可以利用Kurento開發的應用型別包括,視訊會議,音視訊廣播,音視訊錄製、轉碼等。

  • Janus

地址:janus.conf.meetecho.com

? 視訊

國外大神

img

國內大佬

img

本資源節選自: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 協議》,轉載必須註明作者和本文連結

相關文章