本文來自七牛云Android 多媒體開發(fā)工程師盧俊的技術(shù)分享,即時通訊網(wǎng)有改動。 1、前言 這是由一篇我的演講稿整理出來的文章,目標讀者是對實時音視頻開發(fā)感興趣但是又不知道如何下手的初學(xué)者們,希望把我的經(jīng)驗分享出來,對大家有所幫助。 學(xué)習(xí)交流: > - 即時通訊開發(fā)交流3群:185926912[推薦] > - 移動端IM開發(fā)入門文章:《新手入門一篇就夠:從零開發(fā)移動端IM》 (本文同步發(fā)布于:http://www.52im.net/thread-1620-1-1.html) " />
<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          寫給小白的實時音視頻技術(shù)入門提綱

          共 6048字,需瀏覽 13分鐘

           ·

          2022-02-09 17:34

          本文來自七牛云Android 多媒體開發(fā)工程師盧俊的技術(shù)分享,即時通訊網(wǎng)有改動。

          1、前言

          這是由一篇我的演講稿整理出來的文章,目標讀者是對實時音視頻開發(fā)感興趣但是又不知道如何下手的初學(xué)者們,希望把我的經(jīng)驗分享出來,對大家有所幫助。

          學(xué)習(xí)交流:

          - 即時通訊開發(fā)交流3群:185926912[推薦]
          - 移動端IM開發(fā)入門文章:《新手入門一篇就夠:從零開發(fā)移動端IM

          (本文同步發(fā)布于:52im.net/thread-1620-1-


          2、關(guān)于“我”

          盧?。?/b>七牛云直播客戶端團隊技術(shù)負責人。擁有豐富的音視頻領(lǐng)域的開發(fā)和實戰(zhàn)經(jīng)驗,先后開發(fā)過Android播放SDK /推流SDK,短視頻SDK,并主導(dǎo)了七牛連麥系統(tǒng)的設(shè)計和實現(xiàn)。服務(wù)過上百家直播客戶,包括熊貓、全民、龍珠、汽車之家、懂球帝等。

          3、相關(guān)文章

          實時語音聊天中的音頻處理與編碼壓縮技術(shù)簡述

          網(wǎng)易視頻云技術(shù)分享:音頻處理與壓縮技術(shù)快速入門

          學(xué)習(xí)RFC3550:RTP/RTCP實時傳輸協(xié)議基礎(chǔ)知識

          基于RTMP數(shù)據(jù)傳輸協(xié)議的實時流媒體技術(shù)研究(論文全文)

          淺談開發(fā)實時視頻直播平臺的技術(shù)要點

          Android直播入門實踐:動手搭建一套簡單的直播系統(tǒng)

          理論聯(lián)系實際:實現(xiàn)一個簡單地基于HTML5的實時視頻直播

          福利貼:最全實時音視頻開發(fā)要用到的開源工程匯總

          實時視頻直播客戶端技術(shù)盤點:Native、HTML5、WebRTC、微信小程序

          4、成長的煩惱

          經(jīng)常收到一些網(wǎng)友的來信或者留言,反饋如下這樣的困惑:

          “我是一名應(yīng)屆畢業(yè)生,該如何快速地成長起來” “我只懂 C/C++,是學(xué) Android 開發(fā)有前途,還是 iOS 開發(fā)有前途?” “我是一名 Android/iOS 開發(fā),已經(jīng)可以獨立完成一個完整的 App 開發(fā)上線,該如何繼續(xù)提升?” “我想從事音視頻開發(fā),該如何入門? 如何進階 ?”


          很高興看到大家有這樣的問題,因為這也從側(cè)面反映了你是一個積極向上,想不斷努力來提升自己的人。

          我就先從一個簡單的問題聊起,“到底 Android 開發(fā)有前途還是 iOS 開發(fā)有前途?”

          其實這個問題跟 “PHP 是不是世界上最好的語言一樣”,只會引發(fā)爭論,卻沒有什么實際價值,在我看來,無論是 Windows、Linux、Android 還是 iOS 開發(fā),都沒有什么優(yōu)劣之分。

          它們其實都有著很多的共同點,那就是:

          • 1)都是基于操作系統(tǒng)提供的 API 完成特定需求的實現(xiàn)
          • 當然,也有些不同的地方,比如:
          • 2)系統(tǒng)的 API 和特性不同
          • 3)編程語言不同,Windows/Linux 以 C/C++ 為主,Android 以 Java 為主,iOS 以 Object C 為主等等。

          但無論什么平臺,他們的學(xué)習(xí)曲線其實是類似的,都要經(jīng)歷差不多如下的環(huán)節(jié):

          • 1)學(xué)習(xí)對應(yīng)平臺的編程語言,如:C/C++,Java,Object C,Javascript 等;
          • 2)熟悉對應(yīng)平臺提供的 API,如:UI 庫,網(wǎng)絡(luò),文件,數(shù)據(jù)庫, 圖片處理,多媒體處理 等等;
          • 3)掌握平臺相關(guān)的特性、框架和原理,如:Windows 的 WINSOCK,ODBC,WPF 等,Unix 的設(shè)計哲學(xué),Android 的四大組件,iOS 的 MVC 模式等等;
          • 4)通過具體的項目,熟悉和練手,達到可完成任意功能的開發(fā)。

          當你已經(jīng)走到第 4 步了后,往往就會感覺遇到了瓶頸,產(chǎn)生如文章開頭的問題,下一步何去何從 ?

          其實我一直有一個觀點,就是:

          “基于平臺的 API 做應(yīng)用開發(fā),并不是一個可以走得多遠的方向,真正有價值的地方在于與具體的業(yè)務(wù)方向結(jié)合”。


          具體點說,比如:

          • 1)網(wǎng)絡(luò)安全;
          • 2)音視頻;
          • 3)智能硬件;
          • 4)深度學(xué)習(xí);
          • 5)大數(shù)據(jù);
          • 6)其他(比如:金融、通信等)。

          在具體的業(yè)務(wù)領(lǐng)域,你可以慢慢沉淀下來,用自己的努力和時間換來對領(lǐng)域知識的深入理解和積累,逐漸從一個開發(fā)小白走向最懂這個行業(yè)的專家。

          今天呢,我就主要跟大家分享下,如果你對實時音視頻這個領(lǐng)域感興趣,應(yīng)該如何入門和提高 ?

          5、實時音視頻開發(fā)包括哪些技術(shù)內(nèi)容

          雖然一篇文章無法把音視頻開發(fā)的知識點都介紹清楚,但是大概的學(xué)習(xí)路線還是可以梳理一下的,我們先看看下面這張圖:

          其實說白了,音視頻開發(fā),就是要掌握圖像、音頻、視頻的基礎(chǔ)知識,并且學(xué)會如何對它們進行采集、渲染、處理、傳輸?shù)纫幌盗械拈_發(fā)和應(yīng)用。

          具體的技術(shù)內(nèi)容如下:

          • 采集:它解決的是,數(shù)據(jù)從哪里來的問題;
          • 渲染:它解決的是,數(shù)據(jù)怎么展現(xiàn)的問題;
          • 處理:它解決的是,數(shù)據(jù)怎么加工的問題;
          • 傳輸:它解決的是,數(shù)據(jù)怎么共享的問題。

          每一個門類,都可以深挖,衍生出一個又一個充滿技術(shù)挑戰(zhàn)的話題,比如:如何更高效地渲染畫面、如何提高音視頻的壓縮比,如何優(yōu)化弱網(wǎng)下的音視頻數(shù)據(jù)傳輸?shù)鹊取?/p>

          其實,音視頻開發(fā)的技術(shù)積累,也沒有那么難,帶著問題去 Google,帶著任務(wù)去實踐,一切都不是問題,我們就從上面說的 4 個方向,逐個探索一下,有哪些知識點,是要我們?nèi)チ私夂驼莆盏摹?/p>

          不管怎么說,實時音視頻開發(fā)方面的理論基礎(chǔ)是必須要有所了解的,比如以下系列文章:

          另外,《移動端實時音視頻直播技術(shù)詳解》這個系列文章能很好地對應(yīng)上我剛說的這些技術(shù)點,建議讀一讀:

          我們分別具體來看看采集、渲染、處理、傳輸?shù)燃夹g(shù)點。

          6、具體技術(shù)點之采集

          采集,它解決的是,數(shù)據(jù)從哪里來的問題,那么,數(shù)據(jù)究竟從哪里來的呢 ?


          其實無論在哪個平臺,圖像、視頻最初都是來自攝像頭,而音頻最初都是來自麥克風,因此,做音視頻采集,就要掌握如下的技術(shù)知識。

          1)系統(tǒng)的攝像頭采集接口是什么,怎么用 ?

          比如:

          Windows:DirectShow
          Linux:V4L2
          Android:Camera
          iOS:AVCaptureSession


          2)系統(tǒng)的攝像頭采集的參數(shù)怎么配置,都是什么含義 ?

          比如:分辨率、幀率、預(yù)覽方向、對焦、閃光燈 等。


          3)系統(tǒng)的攝像頭輸出的圖像/視頻數(shù)據(jù),是什么格式,不同格式有什么區(qū)別 ?

          比如:圖片:JPEG,視頻數(shù)據(jù):NV21,NV12,I420 等


          4)系統(tǒng)的麥克風采集接口是什么,怎么用 ?

          比如:

          Windows:DirectShow
          Linux:ALSA & OSS
          Android:AudioRecord
          iOS:Audio Unit


          5)系統(tǒng)的麥克風采集參數(shù)怎么配置,都是什么含義 ?

          比如:采樣率,通道號,位寬 等


          6)系統(tǒng)的麥克風輸出的音頻數(shù)據(jù),是什么格式?

          比如:PCM

          7、具體技術(shù)點之渲染

          渲染,它解決的是,數(shù)據(jù)怎么展現(xiàn)的問題,那么,數(shù)據(jù)究竟怎么展現(xiàn)呢 ?


          其實無論在哪個平臺,圖像、視頻最終都是要繪制到視圖上面,而音頻最終都是要輸出到揚聲器,因此,做音視頻渲染,就要掌握如下的技術(shù)知識。

          1)系統(tǒng)提供了哪些 API 可以繪制一張圖片或者一幀 YUV 圖像數(shù)據(jù)的 ?

          比如:

          Windows:DirectDraw, Direct3D, GDI,OpenGL 等
          Linux: GDI, OpenGL 等
          Android:ImageView,SurfaceView,TextureView,OpenGL 等
          iOS: CoreGraphics,OpenGL 等


          2)系統(tǒng)提供了哪些 API 可以播放一個 mp3 或者 pcm 數(shù)據(jù) ?

          比如:

          Windows:DirectSound 等
          Linux:ALSA & OSS 等
          Android:AudioTrack 等
          iOS: AudioQueue 等

          8、具體技術(shù)點之處理

          處理,它解決的是,數(shù)據(jù)怎么加工的問題,那么,數(shù)據(jù)究竟可以怎么加工呢 ?

          首先,我們看看圖像/音視頻的數(shù)據(jù)可以做哪些加工 ?


          其實無論在哪個平臺,圖像和音視頻的加工,除了系統(tǒng)的 API,大多數(shù)都會依賴一些跨平臺的第三方庫的,通過掌握這些第三方庫的原理和使用方法,基本上就可以滿足日常音視頻處理工作了。

          這些庫包括但不限于:

          • 1)圖像處理:OpenGL,OpenCV,libyuv,ffmpeg 等;
          • 2)視頻編解碼:x264,OpenH264,ffmpeg 等;
          • 3)音頻處理:speexdsp,ffmpeg 等;
          • 4)音頻編解碼:libfaac,opus,speex,ffmpeg 等。

          因此,學(xué)習(xí)和掌握這些第三方庫的使用,非常有必要。(以上這些第3方庫的詳細介紹和盤點,詳見《福利貼:最全實時音視頻開發(fā)要用到的開源工程匯總》)

          9、具體技術(shù)點之傳輸

          傳輸,它解決的是,數(shù)據(jù)怎么共享的問題,那么,數(shù)據(jù)究竟怎么共享呢 ?

          共享,最重要的一點,就是協(xié)議。

          我覺得互聯(lián)網(wǎng)之所以能夠如此蓬勃地發(fā)展,將整個世界都緊密聯(lián)系在一起,其實是離不開 W3C 這個委員會的巨大貢獻的,因為無論什么數(shù)據(jù),要想在不同的國家、不同設(shè)備之間互聯(lián)互通,離不開 “標準”,有了 “標準”,大家就能互相讀懂對方。

          因此,研究音視頻傳輸,其實就是在研究協(xié)議,具體有哪些協(xié)議呢 ?

          • 1)音視頻在傳輸前,怎么打包的,如:FLV,ts,mpeg4 等;
          • 2)直播推流,有哪些常見的協(xié)議,如:RTMP,RSTP 等;
          • 3)直播拉流,有哪些常見的協(xié)議,如:RTMP,HLS,HDL,RTSP 等;
          • 4)基于 UDP 的協(xié)議有哪些?如:RTP/RTCP,QUIC 等。

          互聯(lián)網(wǎng)環(huán)境下的音視頻的傳輸,是一個非常有挑戰(zhàn)和價值的方向,為了解決弱網(wǎng)下的傳輸延時、卡頓,提高用戶體驗,整個業(yè)界都在不斷地進行著深入的探索和優(yōu)化。

          有關(guān)移動弱網(wǎng)的特性和討論是個很大話題,如有興趣可以先讀讀以下幾篇文章:

          10、本文小結(jié)

          限于篇幅原因,我的經(jīng)驗分享就到這里了,實時音視頻開發(fā)的路很長,更多的還是要靠自己去學(xué)習(xí)和實踐,帶著追求極致的精神去探索和優(yōu)化,最終,我相信大家都能快速成長,成為真正的行業(yè)專家!

          附錄:更多實時音視頻技術(shù)資料匯總

          [1] 實時音視頻開發(fā)的其它精華資料:
          實時語音聊天中的音頻處理與編碼壓縮技術(shù)簡述
          網(wǎng)易視頻云技術(shù)分享:音頻處理與壓縮技術(shù)快速入門
          學(xué)習(xí)RFC3550:RTP/RTCP實時傳輸協(xié)議基礎(chǔ)知識
          基于RTMP數(shù)據(jù)傳輸協(xié)議的實時流媒體技術(shù)研究(論文全文)
          聲網(wǎng)架構(gòu)師談實時音視頻云的實現(xiàn)難點(視頻采訪)
          淺談開發(fā)實時視頻直播平臺的技術(shù)要點
          還在靠“喂喂喂”測試實時語音通話質(zhì)量?本文教你科學(xué)的評測方法!
          實現(xiàn)延遲低于500毫秒的1080P實時音視頻直播的實踐分享
          移動端實時視頻直播技術(shù)實踐:如何做到實時秒開、流暢不卡
          如何用最簡單的方法測試你的實時音視頻方案
          技術(shù)揭秘:支持百萬級粉絲互動的Facebook實時視頻直播
          簡述實時音視頻聊天中端到端加密(E2EE)的工作原理
          理論聯(lián)系實際:實現(xiàn)一個簡單地基于HTML5的實時視頻直播
          IM實時音視頻聊天時的回聲消除技術(shù)詳解
          淺談實時音視頻直播中直接影響用戶體驗的幾項關(guān)鍵技術(shù)指標
          如何優(yōu)化傳輸機制來實現(xiàn)實時音視頻的超低延遲?
          首次披露:快手是如何做到百萬觀眾同場看直播仍能秒開且不卡頓的?
          Android直播入門實踐:動手搭建一套簡單的直播系統(tǒng)
          網(wǎng)易云信實時視頻直播在TCP數(shù)據(jù)傳輸層的一些優(yōu)化思路
          實時音視頻聊天技術(shù)分享:面向不可靠網(wǎng)絡(luò)的抗丟包編解碼器
          P2P技術(shù)如何將實時視頻直播帶寬降低75%?
          專訪微信視頻技術(shù)負責人:微信實時視頻聊天技術(shù)的演進
          騰訊音視頻實驗室:使用AI黑科技實現(xiàn)超低碼率的高清實時視頻聊天
          微信團隊分享:微信每日億次實時音視頻聊天背后的技術(shù)解密
          近期大熱的實時直播答題系統(tǒng)的實現(xiàn)思路與技術(shù)難點分享
          福利貼:最全實時音視頻開發(fā)要用到的開源工程匯總
          七牛云技術(shù)分享:使用QUIC協(xié)議實現(xiàn)實時視頻直播0卡頓!
          實時音視頻聊天中超低延遲架構(gòu)的思考與技術(shù)實踐
          理解實時音視頻聊天中的延時問題一篇就夠
          實時視頻直播客戶端技術(shù)盤點:Native、HTML5、WebRTC、微信小程序
          >> 更多同類文章 ……
          [2] 開源實時音視頻技術(shù)WebRTC的文章:
          開源實時音視頻技術(shù)WebRTC的現(xiàn)狀
          簡述開源實時音視頻技術(shù)WebRTC的優(yōu)缺點
          訪談WebRTC標準之父:WebRTC的過去、現(xiàn)在和未來
          良心分享:WebRTC 零基礎(chǔ)開發(fā)者教程(中文)[附件下載]
          WebRTC實時音視頻技術(shù)的整體架構(gòu)介紹
          新手入門:到底什么是WebRTC服務(wù)器,以及它是如何聯(lián)接通話的?
          WebRTC實時音視頻技術(shù)基礎(chǔ):基本架構(gòu)和協(xié)議棧
          淺談開發(fā)實時視頻直播平臺的技術(shù)要點
          [觀點] WebRTC應(yīng)該選擇H.264視頻編碼的四大理由
          基于開源WebRTC開發(fā)實時音視頻靠譜嗎?第3方SDK有哪些?
          開源實時音視頻技術(shù)WebRTC中RTP/RTCP數(shù)據(jù)傳輸協(xié)議的應(yīng)用
          簡述實時音視頻聊天中端到端加密(E2EE)的工作原理
          實時通信RTC技術(shù)棧之:視頻編解碼
          開源實時音視頻技術(shù)WebRTC在Windows下的簡明編譯教程
          網(wǎng)頁端實時音視頻技術(shù)WebRTC:看起來很美,但離生產(chǎn)應(yīng)用還有多少坑要填?
          >>更多同類文章 ……

          (本文同步發(fā)布于:52im.net/thread-1620-1-

          瀏覽 11
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  女人被猛操久久久久 | 芲井空αv无码一区二区三区 | A高清无码 | 97人人爽人人爽人人爽人人爽 | 成人做爰免费视频观看 |