“我" />
<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>

          【音視頻開發(fā)】開發(fā)小白如何成為音視頻專家?

          共 3207字,需瀏覽 7分鐘

           ·

          2022-02-09 17:34

          本文作者: @盧俊 ,七牛直播 SDK 技術(shù)負(fù)責(zé)人,先后開發(fā)過 Android 播放 SDK,Android 推流 SDK,并主導(dǎo)了七牛連麥系統(tǒng)的開發(fā)和實(shí)現(xiàn),有豐富的音視頻領(lǐng)域開發(fā)及實(shí)戰(zhàn)經(jīng)驗(yàn)。


          本文盧俊將分享多年實(shí)踐總結(jié)下的開發(fā)經(jīng)驗(yàn),希望對音視頻開發(fā)感興趣但是又不知道如何下手的初學(xué)者們有所幫助。以下是盧俊的分享原稿:


          1. 成長的煩惱

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

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

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

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

          其實(shí)這個(gè)問題跟 “PHP 是不是世界上最好的語言一樣”,只會引發(fā)爭論,卻沒有什么實(shí)際價(jià)值,在我看來,無論是 Windows、Linux、Android 還是 iOS 開發(fā),都沒有什么優(yōu)劣之分,它們其實(shí)都有著很多的共同點(diǎn),那就是:

          都是基于操作系統(tǒng)提供的 API 完成特定需求的實(shí)現(xiàn)

          當(dāng)然,也有些不同的地方,比如:

          1. 系統(tǒng)的 API 和特性不同
          2. 編程語言不同,Windows/Linux 以 C/C++ 為主,Android 以 Java 為主,iOS 以 Object C 為主等等

          但無論什么平臺,他們的學(xué)習(xí)曲線其實(shí)是類似的,都要經(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è)計(jì)哲學(xué),Android 的四大組件,iOS 的 MVC 模式等等
          4. 通過具體的項(xiàng)目,熟悉和練手,達(dá)到可完成任意功能的開發(fā)

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

          其實(shí)我一直有一個(gè)觀點(diǎn),就是:

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

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

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

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


          2. 音視頻開發(fā)包括哪些內(nèi)容

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

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

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

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

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

          2.1 采集

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

          其實(shí)無論在哪個(gè)平臺,圖像、視頻最初都是來自攝像頭,而音頻最初都是來自麥克風(fēng),因此,做音視頻采集,就要掌握如下的技術(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)的麥克風(fēng)采集接口是什么,怎么用 ?
          比如:
          Windows:DirectShow
          Linux:ALSA & OSS
          Android:AudioRecord
          iOS:Audio Unit

          5. 系統(tǒng)的麥克風(fēng)采集參數(shù)怎么配置,都是什么含義 ?
          比如:采樣率,通道號,位寬 等

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

          2.2 渲染

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

          其實(shí)無論在哪個(gè)平臺,圖像、視頻最終都是要繪制到視圖上面,而音頻最終都是要輸出到揚(yáng)聲器,因此,做音視頻渲染,就要掌握如下的技術(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 可以播放一個(gè) mp3 或者 pcm 數(shù)據(jù) ?
          比如:
          Windows:DirectSound 等
          Linux:ALSA & OSS 等
          Android:AudioTrack 等
          iOS: AudioQueue 等

          2.3 處理

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

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

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

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

          因此,學(xué)習(xí)和掌握這些第三方庫的使用,非常有必要。

          2.4 傳輸

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

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

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

          因此,研究音視頻傳輸,其實(shí)就是在研究協(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)境下的音視頻的傳輸,是一個(gè)非常有挑戰(zhàn)和價(jià)值的方向,為了解決弱網(wǎng)下的傳輸延時(shí)、卡頓,提高用戶體驗(yàn),整個(gè)業(yè)界都在不斷地進(jìn)行著深入的探索和優(yōu)化。

          3.小結(jié)

          音視頻的路很長,更多的還是要靠自己去學(xué)習(xí)和實(shí)踐,帶著追求極致的精神去探索和優(yōu)化,最終,大家都能快速成長,成為真正的行業(yè)專家!

          瀏覽 19
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  蜜桃视频成人网站入口 | 中文字幕一区二区三区在线观看 | 无码免费播放 | 操逼免费在线视频 | 中国操逼大片 |