零基礎入門:實時音視頻技術基礎知識全面盤點

2021-01-07 即時通訊技術分享

1、引言

隨著行動網路速度越來越快、質量越來越來,實時音視頻技術已經在各種應用場景下全面開花,語音通話、視頻通話、視頻會議、遠程白板、遠程監控等等。

實時音視頻技術的開發也越來越受到重視,但是由於音視頻開發涉及知識面比較廣,入門門檻相對較高,讓許許多多開發者望而生畏。

雖然網上有很多的博文總結了實時音視頻技術的學習路線,但是相關的知識都相對獨立,有講「音視頻解碼相關」的、有講「OpenGL相關」的、也有講「FFmpeg相關的」、還有講「RTP/RTCP、RTMP、HLS、QUIC等通信相關的」,但是對於新手來說,把所有的知識銜接串聯起來,並很好的理解所有的知識,卻是非常困難的。

本人在學習音視頻開發的過程中,深刻體會到了由於知識的分散、過渡斷層帶來的種種困惑和痛苦,因此希望通過自己的理解,可以把音視頻開發相關的知識總結出來,並形成系列文章,循序漸進,剖析各個環節,一則對自己所學做一個總結和鞏固,二則希望可以幫助想入門音視頻開發的開發者小夥伴們。

本文是作者自已根據入門實時音視頻的親身經歷,對於基礎知識點的認知總結。雖然很淺顯,但相對小白來說,能稍微系統的了解這些概念就已經是很好的起點了。

本文已同步發布於「即時通訊技術圈」公眾號.

3、視頻是什麼?

3.1 動畫書

不知道大家小時候是否玩過一種動畫小人書,連續翻動的時候,小人書的畫面就會變成一個動畫,類似現在的gif格式圖片。

本來是一本靜態的小人書,通過翻動以後,就會變成一個有趣的小動畫,如果畫面夠多,翻動速度夠快的話,這其實就是一個小視頻。

而視頻的原理正是如此,由於人類眼睛的特殊結構,畫面快速切換時,畫面會有殘留,感覺起來就是連貫的動作。所以,視頻就是由一系列圖片構成的。

3.2 視頻幀

幀,是視頻的一個基本概念,表示一張畫面,如上面的翻頁動畫書中的一頁,就是一幀。一個視頻就是由許許多多幀組成的。

3.3 幀率

幀率,即單位時間內幀的數量,單位為:幀/秒 或fps(frames per second)。如動畫書中,一秒內包含多少張圖片,圖片越多,畫面越順滑,過渡越自然。

幀率的一般以下幾個典型值:

1)24/25 fps:1秒 24/25 幀,一般的電影幀率;2)30/60 fps:1秒 30/60 幀,遊戲的幀率,30幀可以接受,60幀會感覺更加流暢逼真。85 fps以上人眼基本無法察覺出來了,所以更高的幀率在視頻裡沒有太大意義。

3.4 色彩空間

這裡我們只講常用到的兩種色彩空間。

1)RGB:RGB的顏色模式應該是我們最熟悉的一種,在現在的電子設備中應用廣泛。通過R G B三種基礎色,可以混合出所有的顏色;2)YUV:這裡著重講一下YUV,這種色彩空間並不是我們熟悉的。這是一種亮度與色度分離的色彩格式。早期的電視都是黑白的,即只有亮度值,即Y。有了彩色電視以後,加入了UV兩種色度,形成現在的YUV,也叫YCbCr。

1)Y:亮度,就是灰度值。除了表示亮度信號外,還含有較多的綠色通道量;2)U:藍色通道與亮度的差值;3)V:紅色通道與亮度的差值。如下圖,可以看到Y、V、U 3個分量的效果差值:

採用YUV有什麼優勢呢?

人眼對亮度敏感,對色度不敏感,因此減少部分UV的數據量,人眼卻無法感知出來,這樣可以通過壓縮UV的解析度,在不影響觀感的前提下,減小視頻的體積。

RGB和YUV的換算:

Y = 0.299R + 0.587G + 0.114BU = -0.147R - 0.289G + 0.436BV = 0.615R - 0.515G - 0.100B——————————————————R = Y + 1.14VG = Y - 0.39U - 0.58VB = Y + 2.03U

3.5 進一步學習

如果你認為上面的文字還是有點專業,則強烈建議閱讀下文:《即時通訊音視頻開發(十九):零基礎,史上最通俗視頻編碼技術入門》,絕對史上最通俗!

4、音頻是什麼?

4.1 基本知識

音頻數據的承載方式最常用的是脈衝編碼調製,即 PCM。

在自然界中,聲音是連續不斷的,是一種模擬信號,那怎樣才能把聲音保存下來呢?那就是把聲音數位化,即轉換為數位訊號。

我們知道聲音是一種波,有自己的振幅和頻率,那麼要保存聲音,就要保存聲音在各個時間點上的振幅。

而數位訊號並不能連續保存所有時間點的振幅,事實上,並不需要保存連續的信號,就可以還原到人耳可接受的聲音。

根據奈奎斯特採樣定理:為了不失真地恢復模擬信號,採樣頻率應該不小於模擬信號頻譜中最高頻率的2倍。

根據以上分析,PCM的採集步驟分為以下步驟:

模擬信號 -> 採樣 -> 量化 -> 編碼 -> 數位訊號

4.2 採樣率和採樣位數

採樣率,即採樣的頻率。

上面提到,採樣率要大於原聲波頻率的2倍,人耳能聽到的最高頻率為20kHz,所以為了滿足人耳的聽覺要求,採樣率至少為40kHz,通常為44.1kHz,更高的通常為48kHz。

採樣位數,涉及到上面提到的振幅量化。波形振幅在模擬信號上也是連續的樣本值,而在數位訊號中,信號一般是不連續的,所以模擬信號量化以後,只能取一個近似的整數值,為了記錄這些振幅值,採樣器會採用一個固定的位數來記錄這些振幅值,通常有8位、16位、32位。

位數越多,記錄的值越準確,還原度越高。

4.3 編碼

最後就是編碼了。由於數位訊號是由0,1組成的,因此,需要將幅度值轉換為一系列0和1進行存儲,也就是編碼,最後得到的數據就是數位訊號:一串0和1組成的數據。

整個過程如下:

4.4 聲道數

聲道數,是指支持能不同發聲(注意是不同聲音)的音響的個數。

單聲道:1個聲道雙聲道:2個聲道立體聲道:默認為2個聲道立體聲道(4聲道):4個聲道

4.5 碼率

碼率,是指一個數據流中每秒鐘能通過的信息量,單位bps(bit per second)。

碼率 = 採樣率 * 採樣位數 * 聲道數

4.6 深入地學習

讀完上面的文字後,如果覺得不夠深入,可以繼續系統的學習以下資料:

《即時通訊音視頻開發(六):如何開始音頻編解碼技術的學習》《即時通訊音視頻開發(七):音頻基礎及編碼原理入門》《即時通訊音視頻開發(八):常見的實時語音通訊編碼標準》《即時通訊音視頻開發(九):實時語音通訊的回音及回音消除概述》《即時通訊音視頻開發(十):實時語音通訊的回音消除技術詳解》《即時通訊音視頻開發(十一):實時語音通訊丟包補償技術詳解》《即時通訊音視頻開發(十八):詳解音頻編解碼的原理、演進和應用選型》《實時語音聊天中的音頻處理與編碼壓縮技術簡述》《網易視頻雲技術分享:音頻處理與壓縮技術快速入門》

如果你認為還需要更淺的文章,則強烈建議閱讀下文(絕對史上最通俗):

《即時通訊音視頻開發(十九):零基礎,史上最通俗視頻編碼技術入門》

5、為什麼要編碼

這裡的編碼和上面音頻中提到的編碼不是同個概念,而是指壓縮編碼。

我們知道,在計算機的世界中,一切都是0和1組成的,音頻和視頻數據也不例外。由於音視頻的數據量龐大,如果按照裸流數據存儲的話,那將需要耗費非常大的存儲空間,也不利於傳送。而音視頻中,其實包含了大量0和1的重複數據,因此可以通過一定的算法來壓縮這些0和1的數據。

特別在視頻中,由於畫面是逐漸過渡的,因此整個視頻中,包含了大量畫面/像素的重複,這正好提供了非常大的壓縮空間。

因此,編碼可以大大減小音視頻數據的大小,讓音視頻更容易存儲和傳送。

那麼,未經編碼的原始音視頻,數據量至底有多大?

以一個解析度1920×1280,幀率30的視頻為例:

共:1920×1280=2,073,600(Pixels 像素),每個像素點是24bit(前面算過的哦);也就是:每幅圖片2073600×24=49766400 bit,8 bit(位)=1 byte(字節);所以:49766400bit=6220800byte≈6.22MB。

這是一幅1920×1280圖片的原始大小,再乘以幀率30。

也就是說:每秒視頻的大小是186.6MB,每分鐘大約是11GB,一部90分鐘的電影,約是1000GB。。。

(以上舉例引用自:《即時通訊音視頻開發(十九):零基礎,史上最通俗視頻編碼技術入門》)

6、視頻編碼

視頻編碼格式有很多,比如H26x系列和MPEG系列的編碼,這些編碼格式都是為了適應時代發展而出現的。

其中,H26x(1/2/3/4/5)系列由ITU(International Telecommunication Union)國際電傳視訊聯盟主導

MPEG(1/2/3/4)系列由MPEG(Moving Picture Experts Group, ISO旗下的組織)主導。

當然,他們也有聯合制定的編碼標準,那就是現在主流的編碼格式H264,當然還有下一代更先進的壓縮編碼標準H265。

視頻編碼知識比較專業,限於篇幅,我就不在此展開討論了。

如果想系統地了解視頻編碼技術,可以讀以下資料:

《即時通訊音視頻開發(一):視頻編解碼之理論概述》《即時通訊音視頻開發(二):視頻編解碼之數字視頻介紹》《即時通訊音視頻開發(三):視頻編解碼之編碼基礎》《即時通訊音視頻開發(四):視頻編解碼之預測技術介紹》《即時通訊音視頻開發(五):認識主流視頻編碼技術H.264》《即時通訊音視頻開發(十二):多人實時音視頻聊天架構探討》《即時通訊音視頻開發(十三):實時視頻編碼H.264的特點與優勢》《即時通訊音視頻開發(十四):實時音視頻數據傳輸協議介紹》《即時通訊音視頻開發(十五):聊聊P2P與實時音視頻的應用情況》《即時通訊音視頻開發(十六):移動端實時音視頻開發的幾個建議》《即時通訊音視頻開發(十七):視頻編碼H.264、VP8的前世今生》

7、音頻編碼

原始的PCM音頻數據也是非常大的數據量,因此也需要對其進行壓縮編碼。

和視頻編碼一樣,音頻也有許多的編碼格式,如:WAV、MP3、WMA、APE、FLAC等等,音樂發燒友應該對這些格式非常熟悉,特別是後兩種無損壓縮格式。

但是,我們今天的主角不是他們,而是另外一個叫AAC的壓縮格式。本節以AAC格式為例,直觀的了解音頻壓縮格式。

AAC是新一代的音頻有損壓縮技術,一種高壓縮比的音頻壓縮算法。在MP4視頻中的音頻數據,大多數時候都是採用AAC壓縮格式。

AAC格式主要分為兩種:ADIF、ADTS。

1)ADIF:Audio Data Interchange Format。音頻數據交換格式。這種格式的特徵是可以確定的找到這個音頻數據的開始,不需進行在音頻數據流中間開始的解碼,即它的解碼必須在明確定義的開始處進行。這種格式常用在磁碟文件中。

2)ADTS:Audio Data Transport Stream。音頻數據傳輸流。這種格式的特徵是它是一個有同步字的比特流,解碼可以在這個流中任何位置開始。它的特徵類似於mp3數據流格式。

ADTS可以在任意幀解碼,它每一幀都有頭信息。ADIF只有一個統一的頭,所以必須得到所有的數據後解碼。且這兩種的header的格式也是不同的,目前一般編碼後的都是ADTS格式的音頻流。

ADIF數據格式:

header | raw_data

ADTS 一幀 數據格式(中間部分,左右省略號為前後數據幀):

AAC內部結構也不再贅述,如果有興趣,可以參考《AAC 文件解析及解碼流程》。

如果需要更深入地學習音頻編碼知識,可以看看以下資料:

《即時通訊音視頻開發(六):如何開始音頻編解碼技術的學習》《即時通訊音視頻開發(七):音頻基礎及編碼原理入門》《即時通訊音視頻開發(八):常見的實時語音通訊編碼標準》《即時通訊音視頻開發(十八):詳解音頻編解碼的原理、演進和應用選型》

8、音視頻容器

細心的讀者可能已經發現,前面我們介紹的各種音視頻的編碼格式,沒有一種是我們平時使用到的視頻格式,比如:mp4、rmvb、avi、mkv、mov...

沒錯,這些我們熟悉的視頻格式,其實是包裹了音視頻編碼數據的容器,用來把以特定編碼標準編碼的視頻流和音頻流混在一起,成為一個文件。

例如:mp4支持H264、H265等視頻編碼和AAC、MP3等音頻編碼。

mp4是目前最流行的視頻格式,在移動端,一般將視頻封裝為mp4格式。

對於音視頻編碼格式和容器之間的關係,可以詳細讀《即時通訊音視頻開發(十九):零基礎,史上最通俗視頻編碼技術入門》一文中的「6、視頻編碼的國際標準」一節。

9、硬解碼和軟解碼

我們在一些播放器中會看到,有硬解碼和軟解碼兩種播放形式給我們選擇,但是我們大部分時候並不能感覺出他們的區別,對於普通用戶來說,只要能播放就行了。

那麼他們內部究竟有什麼區別呢?

在手機或者PC上,都會有CPU、GPU或者解碼器等硬體。通常,我們的計算都是在CPU上進行的,也就是我們軟體的執行晶片,而GPU主要負責畫面的顯示(是一種硬體加速)。

所謂軟解碼:就是指利用CPU的計算能力來解碼,通常如果CPU的能力不是很強的時候,一則解碼速度會比較慢,二則手機可能出現發熱現象。但是,由於使用統一的算法,兼容性會很好。

所謂硬解碼:指的是利用手機上專門的解碼晶片來加速解碼。通常硬解碼的解碼速度會快很多,但是由於硬解碼由各個廠家實現,質量參差不齊,非常容易出現兼容性問題。

10、參考資料

[1] 音視頻開發基礎知識

[2] YUV顏色編碼解析

[3] YUV數據格式

[4] 音頻基礎知識

[5] AAC 文件解析及解碼流程

[6] 入門理解H264編碼

相關焦點

  • 音視頻技術開發周刊|172
    ,我們通常可以使用libx264, ffmpeg等第三方視頻編碼庫,但是如果對編碼的速度有一定的要求,要實現實時甚至超實時的高速視頻編碼,我們並沒有太多選項,只能使用Android提供的MediaCodec硬編碼模塊。
  • 聲網Agora趙德奎:以實時音視頻技術 賦能教育行業
    趙德奎:聲網Agora成立於2013年,是為全球實時互動音視頻提供雲服務。我們在2020年6月26日成功登陸納斯達克,成為全球實時互動雲服務的第一股。我們為廣大開發者提供互動實時音視頻的直播,實時消息、實時錄製,全球碼流加速等多種API產品,方便開發者通過簡單的調用,能夠在自己的應用裡構建多種實時互動的音視頻場景。
  • 音視頻技術開發周刊|169
    架構 WebRTC安全體系架構的8個組件 WebRTC不僅僅是為低延遲實時流媒體傳輸而設計的。為了滿足現代流媒體應用程式的需求,WebRTC還提供了流安全性。
  • 訊飛聽見智慧系列產品全面亮相上海音視頻行業年會
    1月9日下午,第八屆上海音視頻行業年會在上海市召開,活動以「創新、融合、提升」為主題,作為一年一度音視頻+智能化行業交流活動,旨在共同學習了解行業特色,推廣優秀的產品和公司,促進音視頻產業的健康發展。此次活動分為外場展區和內場嘉賓區,華為,MAXHUB,海康,創維等眾多老牌大屏廠家紛紛亮相。
  • 音視頻技術開發周刊
    每周一期,縱覽音視頻技術領域的乾貨和新聞投稿:contribute@livevideostack.com。 https://www.kurento.org/blog/kurento-6140-june-2020 WebRTC系列之音頻的那些事 WebRTC由語音引擎,視頻引擎和網絡傳輸三大模塊組成,其中語音引擎是WebRTC中最具價值的技術之一,實現了音頻數據的採集
  • 飛書上線音視頻實時字幕功能支持中英文互譯
    中新網4月14日電4月13日,飛書在新版本中對音視頻功能進行了升級,新增實時字幕、中英文翻譯等。視頻時,用戶可選擇開啟字幕,並設置顯示語言。據了解,飛書是行業內首個支持音視頻字幕翻譯的產品。  據悉,飛書音視頻功能目前可支持百人會議需求,用戶選擇「開啟字幕」後,系統即可進行語音識別,並滾動顯示在屏幕下方或右側,參會人實時可見並能查看歷史記錄
  • 聲網X 牛客網 200萬場視頻面試背後的實時互動技術支撐
    企業與求職者雙方通過視頻面試可以進行面對面的實時音視頻交流,還能藉助招聘平臺的"互動白板"功能進行實時的互動交流、技術崗可進行實時代碼考核等。來自極光大數據顯示,受疫情影響,今年春季招聘視頻面試需求增長明顯,相比於去年同期3月,今年採用視頻面試的企業數量同比增長了40多倍,視頻面試招聘崗位數同比增長了三百多倍。
  • 太空狼人殺火爆的背後 實時遊戲語音有哪些技術難點
    Cocos creator,方便開發者快速在遊戲中加入實時音視頻功能。2019年7月,聲網也正式成為Unity官方認證合作夥伴,為遊戲開發者提供實時音視頻服務。開發者在使用Unity研發遊戲的過程中,只需要選擇開啟聲網SDK,即可便捷、快速的在遊戲內實現實時音視頻開黑功能,只需四行代碼,最快30分鐘即可完成功能接入。
  • 中國音視頻產業技術與應用趨勢論壇圓滿落幕
    【IT168資訊】第十三屆中國音視頻產業技術與應用趨勢論壇(AVF)在北京召開。本屆論壇圍繞以「人工智慧風口下的突破與創新」為主題,涵蓋國內外音視頻產業核心技術、產品、應用與新興市場領域。最大的亮點則是人工智慧、虛擬實境、增強現實等視聽體驗加速走進人們的日常生活,產業鏈上下遊企業緊抓智能終端入口契機,全面提升用戶的產品交互體驗和與真實/虛擬世界的連接體驗。
  • iOS開發-音視頻開發
    當然,隨著5G技術的誕生,用在智能終端分享3D電影,遊戲或者超高畫質節目的時代已經毫無懸念的向我們走來. 想必大家也逐步了解,國內外的網際網路公司也已經布局音視頻,3D技術方面的開發者招聘和相關產品研發.目前落地推廣最普遍的就是直播類項目和小視頻類的項目.當然未來的方向肯定不止如此.
  • 基於小波變換與DSP的實時音頻視頻處理系統
    面對龐大的音/視頻數據量,作為語音及圖像處理的壓縮技術便在多媒體通信中顯得極為重要。隨著多媒體通信技術和超大規模集成電路(vlsi)技術的飛速發展,這一技術將會在眾多領域得到更為廣泛的應用。本文引用地址:http://www.eepw.com.cn/article/20901.htm 1 音/視頻實時處理系統 低碼率視頻通信的主要技術問題是音/視頻壓縮編碼技術,即用來實現在滿足足夠質量和硬體成本的條件下降低所需的碼率。小波變換充分利用人眼的視覺特性,克服了重構圖像會出現的塊效應、蚊子效應、模糊等現象。
  • 免費CAD練習圖+視頻正解+七天上手
    零基礎也能教你入門AutoCAD,七天輕鬆基礎到入門,輕鬆玩轉操作,上崗工作都是很輕鬆的事情,關鍵是掌握對方法很重要。這裡就詳細的和大家分享零基礎入門的經驗步驟,希望能夠給你帶去一些幫助!一、自學視頻有針對的進行CAD知識的填充,最快速的方法自然是視頻教學,好處多多這裡就不說了,如何進行選擇?
  • 音樂高考知識點:音名與唱名,樂理基礎重點知識
    樂理基礎:音名與唱名1 、基本音名與唱名如同人有名字一樣,音樂中的每個音也有它們各自的名稱,C、D、E這樣的英文字母代表的就是音名每個音名都有它對應的唱名,如下圖。樂理基礎:音名與唱名升降號的寫法在音樂中,一共有4種升降號,分別是升號,降號,重升號×,重降號。
  • 零基礎入門數據分析師——你可以做到!
    但是網上資料一大堆,完全零基礎的你從哪開始學習?視頻下載了很多,無法堅持學習? 經常遇到問題,卻得不到及時解決,浪費大量寶貴時間。CDA數據分析研究院的老師指導您零基礎入門數據分析,以下將針對零基礎學員介紹數據分析的流程。
  • 2020第十六屆中國音視頻產業大會在北京召開
    應對當前的疫情常態化,應對不確定環境常態化,我們既要暢通國內音視頻產業鏈,著力促進產業基礎高級化、產業鏈現代化,也要加強國際協調合作,維護國際產業鏈供應鏈安全穩定,保證國內國際兩個循環的暢通,從而實現中國音視頻產業的良性循環發展。
  • 迎來5G時代大爆發 立足於技術的融雲「水到渠成」
    5G的到來,為實時音視頻技術(Real-TimeCommunication,以下簡稱RTC) 全面爆發提供了有利條件。「水」已到,「渠」如何成?日前,在融雲主辦的全球網際網路通信雲大會(WICC 2020)期間,通信世界全媒體記者採訪了融雲聯合創始人兼CTO楊攀,就5G時代通信雲技術的難點、機遇、趨勢等問題進行了交流。
  • 實時編碼為定性研究提供便利
    對音視頻文件進行編碼而不是對轉錄後的內容進行編碼,可以讓研究者保持與原始數據的聯繫,對非語言內容和互動行為進行更深入的編碼。論文中提出的「實時編碼」方法有兩個特點:第一,對文本轉錄中容易丟失的信息進行更有利的捕捉;第二,目前使用數字工具,已經可以跳過文本轉錄環節直接編碼音視頻數據。
  • 魔力耳朵打造小班課技術壁壘,課堂實時互動穩定延遲低至150ms
    隨著AI、大數據等新技術的不斷迭代,如何利用新技術為在線教育賦能備受行業關注。魔力耳朵作為在線少兒英語教育小班課領導品牌,魔力耳朵憑藉優質的技術,不斷探索在線直播學習模式下的技術創新,通過技術賦能,驅動網際網路技術對教學效果的保障。
  • 「基礎樂理 第一課」音的性質有哪些?你知道嗎?
    大家好,這裡是趣學音樂吧,一個專注於基礎音樂教學的夥伴。學習音樂,我們當然從最基礎的開始學起,音樂,顧名思義是由音構成的,接下來我們來一起學習一下有關音的知識。音是由物體振動而產生,那音的性質有哪些?音的性質有4種,音高、音質、音量、音色,什麼是音高?專業的來講,音高是由發音體在每秒鐘內震動次數的多少來決定的,震動次數多,音則高,震動次數少,音則低,簡單的說例如小號的聲音是非常高亢的,大鼓的聲音是非常低沉的,這就是音的高低之分。
  • 建設音視頻行業健康內容生態,比心陪練呼籲各方聯手共建共治
    建設音視頻行業健康內容生態,比心陪練呼籲各方聯手共建共治 2020年12月2日,「2020音視頻直播行業綠色內容生態共建峰會」在北京舉辦,峰會聚焦「音視頻行業內容健康安全、保護未成年人」的話題,來自政府主管部門