干貨:一些優(yōu)秀的音視頻開源項目、面試題推薦
共 6529字,需瀏覽 14分鐘
·
2024-05-12 10:45
今天在論壇上看到一個關(guān)于音視頻開發(fā)的帖子,看到題目,我忍不住點了進去。
標(biāo)題是這樣的“【??????熱門、吃香】音視頻流媒體權(quán)威資料整理,精選文章,學(xué)術(shù)論文,大佬視頻,實踐項目,開源框架,協(xié)議,業(yè)界大神一覽”,質(zhì)疑“估計是騙人的,怎么會有這么全的內(nèi)容”,但是還是想進去一探究竟。
項目地址:https://github.com/0voice/audio_video_streaming
一、書籍
《FFmpeg從入門到精通》
《視頻圖像處理與性能優(yōu)化》
《數(shù)字圖像與視頻處理》
《數(shù)字音視頻技術(shù)及應(yīng)用 》
《音視頻開發(fā)進階指南:基于Android與iOS平臺的實踐 》
《視頻編碼全角度詳解:AVS_China、H.264_MPEG-4_PART10、HEVC、VP6、DIRAC、VC-1 》
《FFMPEG - From Zero to Hero 》
《FFmpeg Basics 2012 》
《Handbook on SDP for Multimedia Session Negotiations SIP and WebRTC IP Telephony 》
《Learning WebRTC 》
《Real-Time Communication with WebRTC》
二、面試題
1. 為什么巨大的原始視頻可以編碼成很小的視頻呢?這其中的技術(shù)是什么呢?
2. 怎么做到直播秒開優(yōu)化?
3. 直方圖在圖像處理里面最重要的作用是什么?
4. 數(shù)字圖像濾波有哪些方法?
5. 圖像可以提取的特征有哪些?
6. 衡量圖像重建好壞的標(biāo)準(zhǔn)有哪些?怎樣計算?
7. AAC和PCM的區(qū)別?
8. H264存儲的兩個形態(tài)?
9. FFMPEG:圖片如何合成視頻?
10. 常見的音視頻格式有哪些?
11. 請指出“1080p”的意義?
12. 請解釋顏色的本質(zhì)及其數(shù)字記錄原理,并說出幾個你所知道的色域。
13. 請解釋“矢量圖”和“位圖”的區(qū)別?
14. 請從“光圈”“快門速度”“感光度”“白平衡”“景深”中任選2個進行敘述?
15. 視頻分量YUV的意義及數(shù)字化格式?
16. 在MPEG標(biāo)準(zhǔn)中圖像類型有哪些?
17. 列舉一些音頻編解碼常用的實現(xiàn)方案?
18. 請敘述MPEG視頻基本碼流結(jié)構(gòu)?
19. sps和pps的區(qū)別?
20. 請敘述AMR基本碼流結(jié)構(gòu)?
21. 預(yù)測編碼的基本原理是什么?
22. 說一說ffmpeg的數(shù)據(jù)結(jié)構(gòu)?
23. 說一說AVFormatContext 和 AVInputFormat之間的關(guān)系?
24. 說一說AVFormatContext, AVStream和AVCodecContext之間的關(guān)系?
25. 說一說視頻拼接處理步驟?(細節(jié)處理,比如分辨率大小不一,時間處理等等)
26. NV21如何轉(zhuǎn)換成I420?
27. DTS與PTS共同點?
28. 影響視頻清晰度的指標(biāo)有哪些?
29. 編解碼處理時遇到什么困難?
30. 如何秒開視頻?什么是秒開視頻?
31. 如何降低延遲?如何保證流暢性?如何解決卡頓?解決網(wǎng)絡(luò)抖動?
32. 需要把網(wǎng)絡(luò)上一段視頻存儲下來(比如作為mp4 ), 請實現(xiàn)并說出方法(第一個視頻需要翻墻才能進)?
33. 需要把網(wǎng)絡(luò)上一段語音存儲下來(比如作為mp3 ), 請實現(xiàn)并說出方法?
34. 為什么要有YUV這種數(shù)據(jù)出來?(YUV相比RGB來說的優(yōu)點)
35. H264/H265有什么區(qū)別?
36. 視頻或者音頻傳輸,你會選擇TCP協(xié)議還是UDP協(xié)議?為什么?
37. 平時說的軟解和硬解,具體是什么?
38. 何為直播?何為點播?
39. 簡述推流、拉流的工作流程?
三、文章
WebRTC 發(fā)送方碼率預(yù)估實現(xiàn)解析
碼率控制基本概念
Speex回聲消除代碼分析
房間聲學(xué)原理與Schroeder混響算法實現(xiàn)
H264系列--壓縮編碼技術(shù)
RTSP 媒體協(xié)議流的錄制方案及其覆蓋策略詳解
建立連接之ICE框架
流媒體協(xié)議介紹(rtp/rtcp/rtsp/rtmp/mms/hls)
音視頻同步原理及實現(xiàn)
直播概念和流程框架
CDN在直播中的運用
常見音視頻編碼格式
H.264官方軟件JM源代碼分析-編碼器lencod
H.264官方軟件JM源代碼分析-解碼器ldecod
Android 音視頻技術(shù)
Web前端WebRTC攻略-媒體協(xié)商與SDP簡析
基于FFmpeg的AVfilter的例子-純凈版
WebRTC 傳輸安全機制第二話:深入顯淺出 SRTP 協(xié)議
WebRTC能給我?guī)硎裁矗?/span>
視音頻數(shù)據(jù)處理:RGB、YUV像素數(shù)據(jù)處理
視音頻數(shù)據(jù)處理:PCM音頻采樣數(shù)據(jù)處理
視音頻數(shù)據(jù)處理:H.264視頻碼流解析
視音頻數(shù)據(jù)處理:AAC音頻碼流解析
視音頻數(shù)據(jù)處理:FLV封裝格式解析
視音頻數(shù)據(jù)處理:UDP-RTP協(xié)議解析
如何生成mp4文件
ffmpeg濾鏡的基本使用
webRTC是如何實現(xiàn)音視頻的錄制
音視頻同步算法
房間聲學(xué)原理與Schroeder混響算法實現(xiàn)
一個頻域語音降噪算法實現(xiàn)及改進方法
HEVC官方軟件HM源代碼分析-編碼器TAppEncoder
HEVC官方軟件HM源代碼分析-解碼器TAppDecoder
音視頻編解碼常用知識點
微信小程序集成實時音視頻通話功能
視音頻編解碼技術(shù)零基礎(chǔ)學(xué)習(xí)方法
RTSP協(xié)議學(xué)習(xí)
HEVC碼流分析
H.264簡單碼流分析
MPEG2簡單碼流分析
視頻碼流分析工具
H.264分析器
FFmpeg架構(gòu)之IO模塊分析
(Video and Audio Data Processing)UDP-RTP協(xié)議解析
RTSP協(xié)議實例分析
RTSP協(xié)議之TCP或UDP問題
ffplay工具命令使用技巧
VLC RTSP網(wǎng)絡(luò)串流播放失敗
RTMP協(xié)議詳解
STUN 原理理解
四、開源框架
實時音視頻應(yīng)用共包括幾個環(huán)節(jié):采集、編碼、前后處理、傳輸、解碼、緩沖、渲染等很多環(huán)節(jié)。每一個細分環(huán)節(jié),還有更細分的技術(shù)模塊。比如,前后處理環(huán)節(jié)有美顏、濾鏡、回聲消除、噪聲抑制等,采集有麥克風(fēng)陣列等,編解碼有VP8、VP9、H.264、H.265等。
采集->前處理編碼->傳輸->解碼后處理->渲染
實時音視頻開源項目思維導(dǎo)圖
編解碼開源項目
WebRTC
地址:webrtc.org
WebRTC實現(xiàn)了基于網(wǎng)頁的視頻會議,標(biāo)準(zhǔn)是WHATWG 協(xié)議,目的是通過瀏覽器提供簡單的javascript就可以達到實時通訊(Real-Time Communications (RTC))能力。
WebRTC提供了視頻會議的核心技術(shù),包括音視頻的采集、編解碼、網(wǎng)絡(luò)傳輸、顯示等功能,并且還支持跨平臺:windows,linux,mac,android。
H.264
地址:www.linuxfromscratch.org
H.264是ITU(International Telecommunication Union,國際通信聯(lián)盟)和MPEG(Motion Picture Experts Group,運動圖像專家組)聯(lián)合制定的視頻編碼標(biāo)準(zhǔn)。而x264是一個開源的H.264/MPEG-4 AVC視頻編碼函數(shù)庫,是最好的有損視頻編碼器之一。
FFmpeg
地址:ffmpeg.org
FFmpeg是一套可以用來記錄、轉(zhuǎn)換數(shù)字音頻、視頻,并能將其轉(zhuǎn)化為流的開源計算機程序。采用LGPL或GPL許可證。它提供了錄制、轉(zhuǎn)換以及流化音視頻的完整解決方案。FFmpeg提供了編碼、解碼、轉(zhuǎn)換、封裝等功能,以及剪裁、縮放、色域等后期處理。
ijkplayer
地址:bilibili/ijkplayer
ijkplayer 是一個基于 ffplay 的輕量級 Android/iOS 視頻播放器。實現(xiàn)了跨平臺功能,API易于集成;編譯配置可裁剪,方便控制安裝包大?。恢С钟布铀俳獯a,更加省電;提供Android平臺下應(yīng)用彈幕集成的解決方案。
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基金會開發(fā),之后由IETF(互聯(lián)網(wǎng)工程任務(wù)組)進行標(biāo)準(zhǔn)化,目標(biāo)是希望用單一格式包含聲音和語音,取代Speex和Vorbis,且適用于網(wǎng)絡(luò)上低延遲的即時聲音傳輸,標(biāo)準(zhǔn)格式定義于RFC 6716文件。Opus格式是一個開放格式,使用上沒有任何專利或限制。
live555
地址:www.live555.com
服務(wù)端開源項目
jitsi
地址:jitsi/jitsi
Jitsi是一個音頻/視頻和聊天通信器,它支持SIP、XMPP/Jabber、IRC和許多其他有用的特性。
JsSIP
地址:jssip.net
JsSIP是一個簡單易用的JavaScript庫,它利用SIP和WebRTC的最新發(fā)展,在任何網(wǎng)站上提供全功能的SIP端點。通過JsSIP ,只要幾行代碼,任何網(wǎng)站都可以通過音頻,視頻等獲得實時通信功能。
SRS
地址:www.ossrs.net
SRS定位是運營級的互聯(lián)網(wǎng)直播服務(wù)器集群,追求更好的概念完整性和最簡單實現(xiàn)的代碼。SRS提供了豐富的接入方案將RTMP流接入SRS,包括推送RTMP到SRS、推送RTSP/UDP/FLV到SRS、拉取流到SRS。SRS還支持將接入的RTMP流進行各種變換,譬如將RTMP流轉(zhuǎn)碼、流截圖、轉(zhuǎn)發(fā)給其他服務(wù)器、轉(zhuǎn)封裝成HTTP-FLV流、轉(zhuǎn)封裝成HLS、轉(zhuǎn)封裝成HDS、錄制成FLV。SRS包含大規(guī)模集群如CDN業(yè)務(wù)的關(guān)鍵特性,譬如RTMP多級集群、源站集群、VHOST虛擬服務(wù)器、無中斷服務(wù)Reload、HTTP-FLV集群、Kafka對接。此外,SRS還提供豐富的應(yīng)用接口,包括HTTP回調(diào)、安全策略Security、HTTP API接口、RTMP測速。
JRTPLIB
地址:j0r1/JRTPLIB
jrtplib是一個基于C++、面向?qū)ο蟮腞TP封裝庫, jrtplib支持定義于RFC3550中的RTP協(xié)議,它使得發(fā)送和接收RTP報文變得異常簡單,用戶不用擔(dān)心SSRC沖突,也不用考慮如何傳輸RTCP數(shù)據(jù),因為RTCP功能完全在內(nèi)部實現(xiàn)。
OPAL
地址:opalvoip
openphone抽象庫(OPAL)是一個c++多平臺、多協(xié)議的庫,用于IP和其他網(wǎng)絡(luò)上的傳真、視頻和語音。還包括可移植工具庫(PTLib),這是一個c++多平臺抽象庫。
Kurento
地址:www.kurento.org
Kurento 是一個WebRTC流媒體服務(wù)器以及一些客戶端API,開發(fā)WWW及智能手機平臺的高級視頻應(yīng)用就變得更加容易??梢岳肒urento開發(fā)的應(yīng)用類型包括,視頻會議,音視頻廣播,音視頻錄制、轉(zhuǎn)碼等。
Janus
地址:janus.conf.meetecho.com
五、視頻
國外大神
國內(nèi)大佬
六、更多給力的資源
如:學(xué)術(shù)論文、業(yè)界大神介紹、流媒體協(xié)議、實戰(zhàn)項目等
通過上面對內(nèi)容的簡述,我想大家對這分資料,都有了一個大概的了解,也同時對它有了個大概的評價。
從我個人感覺來說,我認為這份資料還是整理得不錯的。并沒有一味吹噓。基本符合標(biāo)題所寫的“【??????熱門、吃香】音視頻流媒體權(quán)威資料整理,精選文章,學(xué)術(shù)論文,大佬視頻,實踐項目,開源框架,協(xié)議,業(yè)界大神一覽”。
資料地址:https://github.com/0voice/audio_video_streaming
repo最后附上的了公眾號,有需要這份資料所有文檔的朋友,可以聯(lián)系他們。
-- END --
進技術(shù)交流群,掃碼添加我的微信:Byte-Flow
獲取視頻教程和源碼
推薦:
