天天看點

直播軟體開發之Java音視訊解決方案:音視訊基礎知識

概念

       從資訊論的觀點來看,描述信源的資料是資訊和資料備援之和,即:資料=資訊+資料備援。音頻信号在時域和頻域上具有相關性,也即存在資料備援。将音頻作為一個信源,音頻編碼的實質是減少音頻中的備援。

        拟信号是可以聽見的聲音經過音頻線或話筒的傳輸都是一系列的模拟信号,模拟信号是可以聽見的。而數字信号就是用一堆數字記号(二進制1和0)來記錄聲音,而不是用實體手段來儲存信号,實際上我們聽不到數字信号。

        比較一下模拟時代的錄音制作與數位時代的差別:模拟時代是把原始信号以實體方式錄制到錄音帶上(當然在錄音棚裡完成),然後加工、剪接、修改,最後錄制到錄音帶、LP等廣大聽衆可以欣賞的載體上。這一系列過程全是模拟的,每一步都會損失一些信号,到了聽衆手裡自然是差了好遠,更不用說什麼HI-FI(高保真)了。數位時代是第一步就把原始信号錄成數位音頻資料,然後用硬體裝置或各種軟體進行加工處理,這個過程與模拟方法相比有無比的優越性,因為它幾乎不會有任何損耗。對于機器來說這個過程隻是處理一下數字而已,當然丢碼的可能性也有,但隻要操作合理就不會發生。最後把這堆數字信号傳輸給數字記錄裝置如CD等,損耗自然小很多。

音頻處理流程

        模拟信号經過->采樣->量化->編碼->數字信号.

        現實生活中,我們聽到的聲音都是時間連續的,我們把這種信号叫模拟信号。模拟信号(連續信号)需要量化成數字信号(離散的、不連續的信号)以後才能在計算機中使用。如下圖所示量化過程分為5個步驟:

 模拟信号: 現實生活中的聲音表現為連續的、平滑的波形,其橫坐标為時間軸,縱坐标表示聲音的強弱。

 采樣: 按照一定的時間間隔在連續的波上進行采樣取值,如下圖所示取了10個樣。

 量化: 将采樣得到的值進行量化處理,也就是給縱坐标定一個刻度,記錄下每個采樣的縱坐标的值。

 編碼: 将每個量化後的樣本值轉換成二進制編碼。

 數字信号: 将所有樣本二進制編碼連起來存儲在計算機上就形成了數字信号。

采樣(sample)

       數位音頻系統是通過将聲波波形轉換成一連串的二進制資料來再現原始聲音的(原始聲音是模拟信号),實作這個步驟使用的裝置是模/數轉換器(A/D轉換器,或者ADC,或者analog to digital convert)。它以每秒上萬次的速率對聲波進行采樣,每一次采樣都記錄下了原始模拟聲波在某一時刻的狀态,稱之為樣本。将一串的樣本連接配接起來,就可以描述一段聲波了,把每一秒鐘所采樣的數目稱為采樣頻率或采率,機關為HZ(赫茲)。采樣頻率越高所能描述的聲波頻率就越高。采樣率決定聲音頻率的範圍(相當于音調),可以用數字波形表示。以波形表示的頻率範圍通常被稱為帶寬。要正确了解音頻采樣可以分為采樣的位數和采樣的頻率。

采樣率(sample rate)

     機關時間内對媒體對象的采樣次數,機關Hz。采樣頻率是指錄音裝置在一秒鐘内對聲音信号的采樣次數,采樣頻率越高聲音的還原就越真實越自然。在當今的主流采集卡上,采樣頻率一般共分為 22.05KHz、44.1KHz(44100Hz)、48KHz三個等級,22.05 KHz隻能達到FM廣播的聲音品質,44.1KHz則是理論上的CD音質界限,48KHz則更加精确一些。對于高于48KHz的采樣頻率人耳已無法辨識出來了,是以在電腦上沒有多少使用價值。

  5kHz的采樣率僅能達到人們講話的聲音品質。

  11kHz的采樣率是播放小段聲音的最低标準,是CD音質的四分之一。

  22kHz采樣率的聲音可以達到CD音質的一半,目前大多數網站都選用這樣的采樣率。

  44kHz的采樣率是标準的CD音質,可以達到很好的聽覺效果。

采樣位數(采樣精度)

       一個采樣用多少個bit存放,常用的是16bit(這就意味着上述的量化過程中,縱坐标的取值範圍是0-65535,聲音是沒有負值的)。

       電腦中的聲音檔案是用數字0和1來表示的。是以在電腦上錄音的本質就是把模拟聲音信号轉換成數字信号。反之,在播放時則是把數字信号還原成模拟聲音信号輸出。采樣位數可以了解為采集卡處理聲音的解析度。這個數值越大,解析度就越高,錄制和回放的聲音就越真實。采集卡的位是指采集卡在采集和播放聲音檔案時所使用數字聲音信号的二進制位數。采集卡的位客觀地反映了數字聲音信号對輸入聲音信号描述的準确程度。8位代表2的8次方0~256,16 位則代表2的16次方-32768~32767。

通道數(channel)

       分為單聲道mono;立體聲stereo。當然還存在更多的通道數。舉個列子,聲道多,效果好,兩個聲道,說明隻有左右兩邊有聲音傳過來,四聲道,說明前後左右都有聲音傳過來

        PCM中的聲音資料沒有被壓縮,如果是單聲道的檔案,采樣資料按時間的先後順序依次存入。如果是雙聲道的檔案,采樣資料按時間先後順序交叉的存入,比如:左聲道資料、右聲道資料、左聲道資料、右聲道資料…。

比特率(bitrate)

    也叫碼率。針對編碼格式,表示壓縮編碼後每秒的音頻資料量大小。計算公式:比特率 = 采樣率 x 采樣精度 x 聲道數。機關kbps,這裡的k為1000

有損和無損

       根據采樣和量化的過程可知,音頻編碼最多隻能做到無限接近自然界的信号,至少目前的技術還不可能将其完全一樣。這是因為自然界的信号是連續的,而音頻編碼後的值是離散的。是以,任何數字音頻編碼方案都是有損的,這也就意味着任何的音頻都不可能完全還原出自然界的聲音。

  在計算機應用中, PCM編碼能夠達到最高保真水準。它已經被廣泛地應用于素材儲存及音樂欣賞,包括CD、DVD以及 WAV檔案等等。是以,PCM約定俗成了無損編碼,但是這并不意味着PCM就能夠確定信号絕對保真,PCM也隻能做到最大程度的無限接近。

音頻傳輸

       這裡主要是指網絡傳輸,通過網絡把音頻資料傳給對方。語音和音樂兩種場景下有明顯的差別。對于語音來說,實時性要求很高,主要用RTP/UDP做承載,由于UDP是不可靠傳輸,會丢包亂序等,影響語音品質,是以要采取相應的措施,主要有PLC(丢包補償)、FEC(前向糾錯)、重傳、jitterbuffer等。[email protected]

對于音樂來說,以前是播放本地音樂檔案,近些年随着網絡帶寬的加大,可以播放雲端的音樂檔案了。播放時要把音樂檔案傳給播放器,一般是邊播放邊下載下傳,播放音樂對實時性要求不高,一般用HTTP/TCP做承載,也就不存在丢包亂序等問題了。

音頻編碼

       根據編碼方式的不同,音頻編碼技術分為如下三種.一般來說,波形編碼的話音品質高,但編碼速率也很高;參數編碼的編碼速率很低,産生的合成語音的音質不高;混合編碼使用參數編碼技術和波形編碼技術,編碼速率和音質介于它們之間。

波形編碼

參數編碼

混合編碼

本文轉載自

https://blog.csdn.net/cuiyaonan2000/article/details/103970656?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160007345119195188329383%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=160007345119195188329383&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_v2~rank_blog_v1-6-103970656.pc_v2_rank_blog_v1&utm_term=%E9%9F%B3%E8%A7%86%E9%A2%91&spm=1018.2118.3001.4187

,僅作分享使用