音視頻開發基礎知識

前段時間項目中使用到了發布視頻動態功能,使用ffmpeg做了簡單壓縮裁剪,發現很有必要補一下音視頻方面知識。
今天學習一下音視頻的基礎知識,日常工作中都會接觸到音視頻的開發,比如目前工作中都會涉及到 TSPlayer、IjkPlayer、MediaPlayer 提供播放能力,不管是什么 Player,其上層調用都是大同小異,但是具體實現以及能夠支持的能力各不相同,要想繼續深入就必須深入音視頻的學習,Android 開發的幾個主要方向分別是應用、Framework、音視頻、NDK等,如果繼續在 Android 領域,這些坑還是是必須要填的,主要內容如下:

  • 視頻編碼
  • 音頻編碼
  • 多媒體播放組件
  • 幀率
  • 分辨率
  • 編碼格式
  • 封裝格式
  • 碼率
  • 顏色空間
  • 采樣率
  • 量化精度
  • 聲道

視頻編碼

視頻編碼指的是通過特定的壓縮技術,將某個視頻文件格式轉換為另一種視頻格式文件的方式,視頻傳輸中主要編解碼標準如下:

  • 運動靜止圖像專家組的 M-JPEG
    M-JPEG 是一種圖像壓縮編碼標準,是 Motion-JPEG 的簡稱,JPEG 標準主要是用來處理靜止圖像,而 M-JPEG 把運動的視頻序列作為連續的靜止圖像來處理,這種壓縮方式單獨完整地壓縮每一幀,在編輯過程中可隨機存儲每一幀,可進行精確到幀的編輯,M-JPEG 只對幀內的空間冗余進行壓縮,不對幀間的時間冗余進行壓縮,故壓縮效率不高。

  • 國際標準化組織(ISO)運動圖像專家組的 MPEG 系列標準
    MPEG 標準主要有五個:MPEG-1、MPEG-2、MPEG-4、MPEG-7 及 MPEG-21 等,MPEG 標準的視頻壓縮編碼技術主要利用了具有運動補償的幀間壓縮編碼技術以減小時間冗余度,利用 DCT 技術以減小圖像的空間冗余度,利用熵編碼則在信息表示方面減小了統計冗余度。這幾種技術的綜合運用,大大增強了壓縮性能。

  • 國際電聯(ITU-T)的 H.261、H.263、H.264等

    • H.261:第一個實用的數字視頻解碼標準,采用的壓縮算法是運動補償幀間預測與分塊 DCT 相結合的混合編碼,其運動補償使用用全像素精度和環路濾波,支持 CIF 和 QCIF 兩種分辨率。
    • H.263:H.263 與 H.261 編碼算法一樣,但是做了一點改善,使得 H.263 標準在低碼率下能夠提供比 H.261 更好的圖像效果,其運動補償使用半像素精度,支持 CIF、QCIF 、SQCIF、4CIF和16CIF 五種分辨率
    • H.264:H.264則是由兩個組織 ISO 和 ITU-T 聯合組建的聯合視頻組(JVT)共同制定的新數字視頻編碼標準,所以它既是 ITU-T 的H.264,又是 ISO/IEC 的 MPEG-4 高級視頻編碼(Advanced Video Coding,AVC)的第 10 部分,因此,不論是MPEG-4 AVC、MPEG-4 Part 10,還是 ISO/IEC 14496-10,都是指 H.264,H.264 是基于傳統框架的混合編碼系統,做了局部優化,注重編碼效率和可靠性。H.264 在具有高壓縮比的同時還擁有高質量流暢的圖像,經過 H.264 壓縮的視頻數據,在網絡傳輸過程中所需要的帶寬更少,是壓縮率最高的視頻壓縮標準。

音頻編碼

常見的音頻編解碼標準如下:

  • ITU:G.711、G.729 等
  • MPEG:MP3、AAC 等
  • 3GPP:AMR、AMR-WB、AMR-WB+等
  • 還有企業制定的標準,如 Dolby AC-3、DTS 、WMA 等

常見的介紹如下:

  • MP3(MPEG-1 audio layer 3):一種音頻壓縮技術,它被設計用來大幅度地降低音頻數據量,利用 MPEG Audio Layer 3 的技術,將音樂以 1:10 甚至 1:12 的壓縮率,壓縮成容量較小的文件,而對于大多數用戶來說重放的音質與最初的不壓縮音頻相比沒有明顯的下降,它是利用人耳對高頻聲音信號不敏感的特性,將時域波形信號轉換成頻域信號,并劃分成多個頻段,對不同的頻段使用不同的壓縮率,對高頻加大壓縮比(甚至忽略信號),對低頻信號使用小壓縮比,保證信號不失真,這樣就相當于拋棄人耳基本聽不到的高頻聲音,只保留能聽到的低頻部分,從而對音頻進行一定壓縮,此外 MP3 屬于有損壓縮的文件格式。

  • AAC:Advanced Audio Coding 的縮寫,最初是基于 MPEG-2 的音頻編碼技術,MPEG-4 出現后,AAC 重新集成了其特性,且加入了SBR 技術和 PS 技術,為了區別于傳統的 MPEG-2 AAC 又稱為MPEG-4 AAC,AAC 是一種專為聲音數據設計的文件壓縮格式,相較 MP3,AAC 格式的音質更佳,文件更小,但是 AAC 是一種有損壓縮格式,隨著大容量設備的出現,其優勢將越來越小。

  • WMA:Windows Media Audio 的縮寫,是微軟公司開發的一系列音頻編解碼器,也指相應的數字音頻編碼格式,WMA 包括四種不同的編解碼器:WMA,原始的WMA編解碼器,作為 MP3 和 RealAudio 編解碼器的競爭者;WMA Pro,支持更多聲道和更高質量的音頻[;WMA Lossless,無損編解碼器;WMA Voice,用于儲存語音,使用的是低碼率壓縮。一些使用 Windows Media Audio 編碼格式編碼其所有內容的純音頻 ASF 文件也使用 WMA 作為擴展名,其特點是支持加密,非法拷貝到本地是無法播放的,WMA 也屬于有損壓縮的文件格式。

多媒體播放組件

  • Android 多媒體播放組件包含 MediaPlayer、MediaCodec、OMX 、StageFright、AudioTrack 等,具體如下:
  • MediaPlayer:為應用層提供的播放控制接口
  • MediaCodec:提供訪問底層媒體編解碼器的接口
  • OpenMAX :Open Media Acceleration,又縮寫為 OMX,開放多媒體加速層,是一個多媒體應用程序標準,Android 主要的多媒體引擎StageFright 是透過 IBinder 使用 OpenMax,用于編解碼處理。
  • StageFright:Android 2.2 開始引入用來替換預設的媒體播放引擎 OpenCORE,Stagefright 是位于 Native 層的媒體播放引擎,內置了基于軟件的編解碼器,且適用于熱門媒體格式,其編解碼功能是利用OpenMAX 框架,引入的是 OpenCORE 的 omx-component 部分,在 Android 中是以共享庫的形式存在,對應 libstagefright.so。
  • AudioTrack:管理和播放單個音頻資源,僅支持 PCM 流,如大多數的 WAV 格式的音頻文件就是就是 PCM 流,這類音頻文件支持 AudioTrack 直接進行播放。

常見的多媒體框架及解決方案

常見的多媒體框架及解決方案有 VLC 、 FFmpeg 、 GStream 等,具體如下:

  • VLC : 即 Video LAN Client,是一款自由、開源的跨平臺多媒體播放器及框架 。
  • FFmpeg:多媒體解決方案,不是多媒體框架,廣泛用于音視頻開發中。
  • GStreamer : 一套構建流媒體應用的開源多媒體框架 。

幀率

幀率是用于測量顯示幀數的量度。單位為「每秒顯示幀數」(Frame per Second,FPS)或「赫茲,Hz」,表示每秒的幀數(FPS)或者說幀率表示圖形處理器處理場時每秒鐘能夠更新的次數,高的幀率可以得到更流暢、更逼真的動畫,一般來說 30fps 就是可以接受的,但是將性能提升至 60fps 則可以明顯提升交互感和逼真感,但是一般來說超過 75fps 一般就不容易察覺到有明顯的流暢度提升了,如果幀率超過屏幕刷新率只會浪費圖形處理的能力,因為監視器不能以這么快的速度更新,這樣超過刷新率的幀率就浪費掉了。

分辨率

視頻分辨率是指視頻成像產品所形成的圖像大小或尺寸,常見的 1080P、4K 等有代表什么呢,P 本身的含義是逐行掃描,表示視頻像素的總行數,1080P 表示總共有 1080 行的像素數,而 K 表示視頻像素的總列數,4K 表示有 4000 列的像素數,通常來說,1080P 就是指 1080 x 1920 的分辨率,4 k 指 3840 x 2160 的分辨率。

編碼格式

針對音視頻來說,編碼格式對應的就是音頻編碼和視頻編碼,對照前面的音頻編碼標準和視頻編碼標準,每種編碼標準都對應的編碼算法,其目的是通過一定編碼算法實現數據的壓縮、減少數據的冗余。

封裝格式

直接看下百度百科的關于封裝格式的介紹,封裝格式(也叫容器),就是將已經編碼壓縮好的視頻軌和音頻軌按照一定的格式放到一個文件中,也就是說僅僅是一個外殼,或者大家把它當成一個放視頻軌和音頻軌的文件夾也可以,說得通俗點,視頻軌相當于飯,而音頻軌相當于菜,封裝格式就是一個碗,或者一個鍋,用來盛放飯菜的容器。

碼率

碼率,也就是比特率(Bit rate),指單位時間內傳輸或處理的比特的數量,單位為 bps(bit per second)也可表示為 b/s,比特率越高,單位時間傳送的數據量(位數)越大,多媒體行業在指音頻或視頻在單位時間內的數據傳輸率時通常使用碼率,單位是 kbps,一般來說,如果是 1M 的寬帶,在網上只能看碼流不超過 125kbps 的視頻,超過 125kbps 的視頻只能等視頻緩沖才能順利觀看。

碼率一般分為固定碼率和可變碼率:

  • 固定碼率會保證碼流的碼率恒定,但是會犧牲視頻質量,比如為了保證碼率恒定,某些圖像豐富的內容就是失去某些圖像細節而變得模糊。
  • 可變碼率指的是輸出碼流的碼率是可變的,因為視頻信源本身的高峰信息量是變化的,從確保視頻傳輸質量和充分利用信息的角度來說,可變碼率視頻編碼才是最合理的。

碼率的高低與視頻質量和文件提交成正比,但當碼率超過一定數值后,對視頻質量沒有影響

顏色空間

  • YUV:一種顏色編碼方法,一般使用在在影像處理組件中,YUV 在對照片或視頻編碼時,考慮到人類的感知能力,允許降低色度的帶寬,其中 Y 表示明亮度、U 表示色度、V 表示濃度,Y′UV、YUV、YCbCr、YPbPr 所指涉的范圍,常有混淆或重疊的情況。從歷史的演變來說,其中 YUV 和 Y'UV 通常用來編碼電視的模擬信號,而 YCbCr 則是用來描述數字的影像信號,適合視頻與圖片壓縮以及傳輸,例如 MPEG、JPEG,現在 YUV 通常已經在電腦系統上廣泛使用。
  • RGB:原色光模式,又稱 RGB 顏色模型或紅綠藍顏色模型,是一種加色模型,將紅(Red)、綠(Green)、[藍(Blue)三原色的色光以不同的比例相加,以合成產生各種色彩光,目前的大多數顯示器都采用 RGB 這種顏色標準。

YUV 主要用于優化彩色視頻信號的傳輸,使其向后相容老式黑白電視,與 RGB 視頻信號傳輸相比,它最大的優點在于只需占用極少的帶寬。

采樣率

采樣率,表示每秒從連續信號中提取并組成離散信號的采樣個數,用赫茲(Hz)來表示,采樣率是指將模擬信號轉換成數字信號時的采樣頻率,人耳能聽到的聲音一般在 20Hz~20KHz 之間,根據采樣定理,采樣頻率大于信號中最高頻率的 2 倍時,采樣之后的數字信號便能完整的反應真實信號,常見的采樣率如下:

  • 8000 Hz:電話所用采樣率, 對于人的說話已經足夠
  • 11025 Hz:AM調幅廣播所用采樣率
  • 22050 Hz 和 24,000 Hz:FM調頻廣播所用采樣率
  • 44100Hz:音頻CD,常用于 MPEG-1 音頻(VCD,SVCD,MP3)所用采樣率
  • 47,250 Hz:商用 PCM 錄音機所用采樣率
  • 48,000 Hz:miniDV、數字電視、DVD、DAT、電影和專業音頻所用的數字聲音所用采樣率

CD 音樂的標準采樣頻率為 44.1KHz,這也是目前聲卡與計算機作業間最常用的采樣頻率,目前比較盛行的藍光的采樣率就相當的高,達到了 192kHz。而目前的聲卡,絕大多數都可以支持 44.1kHz、48kHz、96kHz,高端產品可支持 192kHz 甚至更高,總之,采樣率越高,獲得的聲音文件質量越好,占用存儲空間也就越大。

量化精度

聲波在轉換為數字信號的過程中不只有采樣率影響原始聲音的完整性,還有一個重要影響因素是量化精度,采樣頻率針對的是每秒鐘所采樣的數量,而量化精度則是對于聲波的振幅進行切割,切割的數量是以最大振幅切成 2 的 n 次方計算,n 就是 bit 數,而 bit 數就是音頻分辨率。
另外,bit 的數目還決定了聲波振幅的范圍(即動態范圍,最大音量與最小音量的差距),如果這個位數越大,則能夠表示的數值越大,描述波形更精確,每一個 Bit 的數據可以記錄約等于 6dB 動態的信號,一般來說,16Bit 可以提供最大 96dB 的動態范圍(加高頻顫動后 只有 92dB),據此可以推斷出 20Bit 可以達到 120dB 的動態范圍,動態范圍大了,會有什么好處呢?動態范圍是指系統的輸出噪音功率和最大不失真音量功率的比值,這個值越大,則系統可以承受很高的動態。

聲道

聲道指聲音在錄制或播放時在不同空間位置采集或回放的相互獨立的音頻信號,所以聲道數也就是聲音錄制時的音源數量或回放時相應的揚聲器數量,常見聲道有單聲道、立體聲道、4 聲道、5.1 聲道、7.1 聲道等 ,具體如下:

  • 單聲道:設置一個揚聲器。
  • 立體聲道:把單聲道一個揚聲器擴展為左右對稱的兩個揚聲器,聲音在錄制過程中被分配到兩個獨立的聲道,從而達到了很好的聲音定位效果,這種技術在音樂欣賞中顯得尤為有用,昕眾可以清晰地分辨出各種樂器來自何方,從而使音樂更富想象力,更加接近臨場感受。立體聲技術廣泛應用于自 Sound Blaster Pro 以后的大量聲卡,成為了
    影響深遠的音頻標準。
  • 4 聲道:4 聲道環繞規定了 4 個發音點,分別是前左、前右、后左、后右,昕眾則被包圍在中間,同時還建議增加一個低音音箱,以加強對低頻信號的回放處理,這也就是如今 4.1 聲道音箱系統廣泛流行的原因,就整體效果而言,4 聲道系統可以為聽眾帶來來自多個不 同方向的聲音環繞,可以獲得身 臨各種不同環境的昕覺感受,給用戶以全新的體驗。
  • 5.1 聲道:其實 5.1 聲道系統來源于 4.1 聲道系統,將環繞聲道一分為二,分為左環繞和右環繞,中央位置增加重低音效果。
  • 7.1 聲道:7.1 聲道系統在 5.1 聲道系統的基礎上又增加了中左和中右兩個發音點,簡單來說就是在聽者的周圍建立起一套前后相對平衡的聲場,增加了 后中聲場聲道。
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,622評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,716評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,746評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,991評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,706評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,036評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,029評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,203評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,725評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,451評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,677評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,161評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,857評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,266評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,606評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,407評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,643評論 2 380

推薦閱讀更多精彩內容