那么我們現(xiàn)在帶著問題來" />
<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>

          iOS開發(fā)-音視頻開發(fā)

          共 1722字,需瀏覽 4分鐘

           ·

          2022-02-09 17:35

          一.學(xué)習(xí)背景

          5G網(wǎng)絡(luò)作為第5代的移動通信網(wǎng)絡(luò),它的網(wǎng)絡(luò)峰值傳播速度可1以達(dá)到10Gbps/s.這比4G的的傳輸速度快數(shù)百倍.舉個例子,整部超高畫質(zhì)電影下載可在1秒鐘之內(nèi)下載完成.

          當(dāng)然,隨著5G技術(shù)的誕生,用在智能終端分享3D電影,游戲或者超高畫質(zhì)節(jié)目的時代已經(jīng)毫無懸念的向我們走來.

          想必大家也逐步了解,國內(nèi)外的互聯(lián)網(wǎng)公司也已經(jīng)布局音視頻,3D技術(shù)方面的開發(fā)者招聘和相關(guān)產(chǎn)品研發(fā).目前落地推廣最普遍的就是直播類項目和小視頻類的項目.當(dāng)然未來的方向肯定不止如此.

          那么我們現(xiàn)在帶著問題來學(xué)習(xí)?


          為何編碼?
          何為編碼?

          1.1 為何編碼?

          從存儲角度和網(wǎng)絡(luò)傳輸以及通用性 3個角度,壓縮已經(jīng)成了不可或缺的動作.壓縮編碼最基本的指標(biāo),就是壓縮比. 壓縮比通常都是小于1(如果等于或者大于1,是不是就失去了編碼的意義了.編碼的目的就是為了壓縮數(shù)據(jù)體量).

          1.2 何為編碼?

          編碼就是按照一定的格式記錄采樣和量化后的數(shù)據(jù).

          1.2.1編碼中軟編碼和硬編碼的區(qū)別?

          • 硬編碼: 使用非CPU進(jìn)行編碼,例如使用GPU芯片處理
          • 軟編碼: 使用CPU來進(jìn)行編碼計算.

          1.2.2 軟編碼與硬編碼的區(qū)分?

          • 軟編碼: 實現(xiàn)直接、簡單,參數(shù)調(diào)整方便,升級易,但CPU負(fù)載重,性能較硬編碼低,低碼率下質(zhì)量通常比硬編碼要好一點。
          • 硬編碼:性能高,低碼率下通常質(zhì)量低于硬編碼器,但部分產(chǎn)品在GPU硬件平臺移植了優(yōu)秀的軟編碼算法(如X264)的,質(zhì)量基本等同于軟編碼。
          讀者理解:
          硬編碼,就是使用GPU計算,獲取數(shù)據(jù)結(jié)果,優(yōu)點速度快,效率高.
          軟編碼,就是通過CPU來計算,獲取數(shù)據(jù)結(jié)果.

          1.2.3 壓縮算法

          壓縮算法分為2種,有損壓縮與無損壓縮.

          • 無損壓縮:解壓后的數(shù)據(jù)可以完全復(fù)原,在常用的壓縮格式中,無損壓縮使用頻次較低
          • 有損壓縮:解壓后數(shù)據(jù)不能完全復(fù)原,會丟失一部分信息.壓縮比越小,丟失的信息就會越多.信號還原的失真就會越大.

          需要根據(jù)不同的場景(考慮因素包括存儲設(shè)備,傳輸網(wǎng)絡(luò)環(huán)境,播放設(shè)備等)選用不同的壓縮編碼算法.

          二. 直播APP需求剖析

          2.1 直播項目流程

          在直播項目中,一般常見有8個步驟.

          • 音視頻采集
          • 視頻濾鏡
          • 音視頻編碼
          • 推流
          • 流媒體服務(wù)器處理
          • 拉流
          • 音視頻解碼
          • 音視頻播放

          這個在開發(fā)者面試一些有意向或者目前業(yè)務(wù)中包含直播需求的公司,最為常見的面試題.不管在我們過往的工作經(jīng)驗是否有直播或音視頻相關(guān)經(jīng)驗.這個一塊都是你必須能了解.希望大家可以簡單的了解.

          2.2 相關(guān)框架的學(xué)習(xí)與使用場景

          采集視頻,音頻

            • 使用iOS原生框架 AVFoundation.framework

          視頻濾鏡處理

            • 使用iOS原生框架 CoreImage.framework
            • 使用第三方框架 GPUImage.framework

          CoreImageGPUImage 框架比較:

          在實際項目開發(fā)中,開發(fā)者更加傾向使用于GPUImage框架.

          首先它在使用性能上與iOS提供的原生框架,并沒有差別;其次它的使用便利性高于iOS原生框架,最后也是最重要的GPUImage框架是開源的.而大家如果想要學(xué)習(xí)GPUImage框架,建議學(xué)習(xí)OpenGL ES,其實GPUImage的封裝和思維都是基于OpenGL ES

          視頻\音頻編碼壓縮

            • 視頻: 使用FFmpeg,X264算法把視頻原數(shù)據(jù)YUV/RGB編碼成H264
            • 音頻: 使用fdk_aac 將音頻數(shù)據(jù)PCM轉(zhuǎn)換成AAC
            • 視頻: VideoToolBox框架
            • 音頻: AudioToolBox 框架
            • 硬編碼
            • 軟編碼

          推流

            • 流媒體協(xié)議: RTMP\RTSP\HLS\FLV
            • 視頻封裝格式: TS\FLV
            • 音頻封裝格式: Mp3\AAC
            • 推流: 將采集的音頻.視頻數(shù)據(jù)通過流媒體協(xié)議發(fā)送到流媒體服務(wù)器
            • 推流技術(shù)

          流媒體服務(wù)器

            • 數(shù)據(jù)分發(fā)
            • 截屏
            • 實時轉(zhuǎn)碼
            • 內(nèi)容檢測

          拉流

            • 拉流: 從流媒體服務(wù)器中獲取音頻\視頻數(shù)據(jù)
            • 流媒體協(xié)議: RTMP\RTSP\HLS\FLV

          音視頻解碼

            • 視頻: 使用FFmpeg,X264算法解碼
            • 音頻: 使用fdk_aac 解碼
            • 視頻: VideoToolBox框架
            • 音頻: AudioToolBox 框架
            • 硬解碼
            • 軟解碼

          播放

          ijkplayer,kxmovie 都是基于FFmpeg框架封裝的
          • ijkplayer 播放框架
          • kxmovie 播放框架
          瀏覽 12
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  色五月婷婷视频网 | 婷婷丁香五月天色 | 拍拍拍拍拍拍拍拍拍拍拍拍拍拍拍拍拍电影 | 韩国无码一区二区三区 | 亚洲 欧美 国产 另类 |