當前位置: 妍妍網 > 碼農

幹貨:一些優秀的音視訊開源計畫、面試題推薦

2024-05-12碼農

今天在論壇上看到一個關於音視訊開發的貼文,看到題目,我忍不住點了進去。

標題是這樣的「 【🔥🔥🔥熱門、吃香】音視訊串流媒體權威資料整理,精選文章,學術論文,大佬視訊,實踐計畫,開源框架,協定,業界大神一覽 」, 質疑「估計是騙人的,怎麽會有這麽全的內容」,但是還是想進去一探究竟。

計畫地址:https://github.com/0voice/audio_video_streaming

一、書籍

  1. 【FFmpeg從入門到精通】

  2. 【視訊影像處理與效能最佳化】

  3. 【數位影像與視訊處理】

  4. 【數位音視訊技術及套用 】

  5. 【音視訊開發進階指南:基於Android與iOS平台的實踐 】

  6. 【視訊編碼全形度詳解:AVS_China、H.264_MPEG-4_PART10、HEVC、VP6、DIRAC、VC-1 】

  7. 【FFMPEG - From Zero to Hero 】

  8. 【FFmpeg Basics 2012 】

  9. 【Handbook on SDP for Multimedia Session Negotiations SIP and WebRTC IP Telephony 】

  10. 【Learning WebRTC 】

  11. 【Real-Time Communication with WebRTC】

二、面試題

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等。

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

即時音視訊開源計畫思維導圖


編解碼開源計畫

  • 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

    五、視訊

    國外大神

    國內大佬

    六、更多給力的資源

    如:學術論文、業界大神介紹、串流媒體協定、實戰計畫等

    透過上面對內容的簡述,我想大家對這分資料,都有了一個大概的了解,也同時對它有了個大概的評價。

    從我個人感覺來說,我認為這份資料還是整理得不錯的。並沒有一味吹噓。基本符合標題所寫的「【🔥🔥🔥熱門、吃香】音視訊串流媒體權威資料整理,精選文章,學術論文,大佬視訊,實踐計畫,開源框架,協定,業界大神一覽」。

    資料地址:https://github.com/0voice/audio_video_streaming

    repo最後附上的了公眾號,有需要這份資料所有文件的朋友,可以聯系他們。

    -- END --

    進技術交流群, 掃碼添加我的微信:Byte-Flow

    獲取視訊教程和源碼


    推薦: