实时音频的混音在视频直播中的技术原理和实践总结
前言
隨著視頻直播應用被越來越廣泛地接受,視頻直播應用的相關技術和玩法也在不斷翻新,以便持續地吸引和留住用戶。這半年來,一些典型的創新玩法,包括K歌直播和合唱直播等都是非常受用戶歡迎的。這些創新玩法都用到了實時音頻混音技術。
今天,我們就來聊一聊混音技術在視頻直播應用中的實現原理、方案等,及其在創新玩法中的實踐應用。
混音的應用場景
混音,顧名思義,就是把兩路或者多路音頻流混合在一起,形成一路音頻流。筆者曾經寫過兩篇關于混流的文章,混流也被稱為合流,指的是把視頻畫面和音頻對齊,然后混合成一路音視頻流。我們今天要聊的實時音頻混音,指的只是音頻流的混合。
混音的邏輯可以在終端設備上實現,也可以在服務器上實現,因此可以分為終端混音和云端混音。終端混音一般應用于背景配音,音樂伴奏等場景。云端混音可以是云端混流的一部分,主要目的是利用云端的計算能力去做多路音視頻流的音畫對齊,還有降低下行帶寬成本;也可以做純粹的云端混音,來實現合唱直播等場景的需求。
混音技術在視頻直播應用場景中并不新鮮。視頻直播間里比較機械化的掌聲、笑聲、口哨聲甚至背景音樂,都是混音技術的應用。在主播端,采集主播的聲音形成音頻流A1,從音頻文件中讀取音頻流A2,把A1和A2兩路音頻流混合,形成一路音頻流,這就是混音。
然而,視頻直播的玩法創新日新月異。2017年12月酷狗直播上線了KTV直播的玩法,主播可以在線跟隨伴奏K歌,直播間的觀眾能聽到主播和伴奏的歌聲,還能看到歌詞字幕。2018年5月全民K歌上線了合唱直播的玩法,主播和嘉賓一起在線同唱同一首歌,直播間的觀眾能聽到主播和嘉賓的合唱以及伴奏。
這些新的玩法都是對混音技術的深度應用。本文后面將對這兩種玩法的邏輯展開討論。
混音之前的處理
并非任何兩路音頻流都可以直接混合。
兩路音視頻流,必須符合以下條件才能混合:
-
1)格式相同,要解壓成PCM格式;
-
2)采樣率相同,要轉換成相同的采樣率。主流采樣率包括:16k Hz、32k Hz、44.1k Hz和48k Hz;
-
3)幀長相同,幀長由編碼格式決定,PCM沒有幀長的概念,開發者自行決定幀長。為了和主流音頻編碼格式的幀長保持一致,推薦采用20ms為幀長;
-
4)位深(Bit-Depth)或采樣格式(Sample Format)相同,承載每個采樣點數據的bit數目要相同;
-
5)聲道數相同,必須同樣是單聲道或者雙聲道(立體聲)。這樣,把格式、采樣率、幀長、位深和聲道數對齊了以后,兩個音頻流就可以混合了。
在混音之前,還需要做回聲消除、噪音抑制和靜音檢測等處理。回聲消除和噪音抑制屬于語音前處理范疇的工作。在編碼之前,采集、語音前處理、混音之前的處理、混音和混音之后的處理應該按順序進行。靜音抑制(VAD,Voice Activity Detect)可做可不做。對于終端混音,是要把采集到的主播聲音和從音頻文件中讀到的伴奏聲音混合。如果主播停頓一段時間不發出聲音,通過VAD檢測到了,那么這段時間不混音,直接采用伴奏音樂的數據就好了。然而,為了簡單起見,也可以不做VAD。主播不發聲音的期間,繼續做混音也可以(主播的聲音為零振幅)。
基礎混音算法
我們的周遭環境就是個天然的混音場,各種聲波在空氣中傳播,相互疊加,傳入到我們的耳朵里。不同聲波在空氣中的振幅疊加是線性的,因此,在混音算法中,音頻采樣數據表征聲音的振幅,音頻數據的疊加也是線性的。
然而,我們需要考慮兩方面的因素。
混合權重:
兩個音頻流的振幅表示聲音的能量水平,然而兩個聲音可能一個很大,一個很小,對比懸殊。在混音的時候,從用戶聽音的主觀感受來說,是希望兩個聲音混合后聽起來比較均衡。因此,混音算法要考慮兩個聲音振幅的權重,或者說調節音量。
實踐經驗表明,采集到的主播聲音相對比較小,而文件讀取的音頻聲音比較大,推薦保持主播的聲音音量不變,而調節伴奏音樂的音量到一個比較合適的水平,然后再混合。
溢出處理:
兩個音頻流的兩個對應的采樣點的數據線性相加可能會造成溢出。每一個音頻采樣點的數據由16bit,也就是2個字節來表示,能夠表示的有符號整型數的范圍是-32768~32767。
兩個音頻流的兩個對應的采樣點由兩個16bit的整數表示,這兩個整數相加可能會溢出,向上溢出或者向下溢出。因此,混音算法要能夠處理溢出的情況。
溢出處理的方法有很多,這里只提一種:直接加和并且鉗位,加和后往上溢出的話,就采用最大正值(32767),如果往下溢出,就采用最大負值(-32768)。
私信扣1,免費分享,2022最新最全學習提升資料包,資料內容包括《Andoird音視頻開發必備手冊+音視頻最新學習視頻+大廠面試真題+2022最新學習路線圖》等等?
?
混音之后的處理
混音處理以后,要做溢出檢測,針對溢出的采樣點做溢出處理。也可以做一些平滑處理的操作,不過這不是必要的。混音的效果好不好,最終還是要以用戶的主觀聽感來做判斷標準。
混音技術一般不會單獨使用。在視頻直播場景中,往往是和其它一些技術混合使用。比如說,K歌直播場景中,用到的技術包括混音技術,歌詞與媒體同步傳輸技術。合唱直播場景中,用到的技術包括混音技術,連麥直播技術等。多種技術的靈活組合使用,就能創造出讓主播和用戶喜愛的玩法,拉升直播平臺的用戶活躍度。
混音與KTV直播
KTV直播,也就是線上K歌房的玩法,真實地還原了線下K歌房的玩法。舉個例子,小明是個麥霸,周末想去K歌房K歌,可是朋友們都沒空,約不到人一起K歌。于是小明就通過手機或者PC,進入線上的K歌房,房間里有和小明一樣的其它用戶。和其它用戶一樣,小明要排隊輪流上麥K歌,在上麥之前要點好要唱的歌曲。K歌的時候,小明能聽到伴奏和看到歌詞,其它同在K歌房的用戶能聽到小明的歌聲和伴奏,還能看到同步的歌詞,完美地還原了線下K歌房的體驗。這樣,小明就算約不到朋友,也可以在線上KTV找到網友一起K歌。
從技術的角度來看,本質上KTV直播是在視頻直播的基礎上,混音技術和媒體通道傳數據技術的應用。混音技術在上面已經詳細介紹,媒體通道傳數據技術就是在媒體通道內傳輸數據信息,比如說歌詞等信息。下圖展示了KTV直播的技術架構。
KTV直播的技術架構圖:
在歌手的終端,歌手的歌聲和伴奏音樂被混合,和歌手的視頻一起編碼成音視頻流推送到實時傳輸網絡。這是混音技術,前面已經介紹過。歌詞信息和音視頻信息是在同一個媒體通道傳輸的,這樣可以保障歌詞和音視頻同步。這就是媒體通道傳數據技術,可以被應用到KTV直播,還有直播答題和在線教育等場景。
大概的業務流程如下:
-
1)歌手端從伴奏音樂庫下載伴奏音樂和歌詞信息,并實時播放;
-
2)歌手演唱,歌手端采集歌手的歌聲和視頻畫面;
-
3)歌聲和伴奏被混音,形成單一的音頻流;
-
4)歌詞信息和音視頻數據一起被編碼;
-
5)音視頻流和歌詞信息同步被推送到實時傳輸網絡;
-
6)音視頻流經過實時傳輸網絡加速,轉發到內容分發網絡;
-
7)輪麥的用戶從實時傳輸網絡拉流播放,歌聲和歌詞同步;
-
8)普通的用戶從內容分發網絡拉流播放,歌聲和歌詞同步。
這是典型的視頻直播場景,再加上混音技術和媒體通道傳數據技術結合,真實地還原線下KTV的效果。
混音與合唱直播
合唱直播,其實是KTV直播加上合唱的場景,真實地還原了在線下K歌房中合唱的玩法。合唱直播,指的是兩個或者以上的用戶,隨著伴奏看著歌詞一起K歌。合唱直播和KTV直播的關鍵區別在于,有兩個或者以上的用戶一起K歌,混音的場所(在哪個終端?是終端還是云端?)是考慮的關鍵,最終要讓歌聲、伴奏和歌詞同步。KTV直播混音的場所是歌手端設備,而合唱直播的混音場所可以是歌手端設備,也可以是云端,要根據不同的方案而定。
去年11月,馬云和王菲合唱一首《風清揚》,作為《功守道》的主題曲,成了刷爆朋友圈的熱點。
如果馬云和王菲使用合唱直播技術在線上合唱的話,效果圖大概如下:
?從技術的角度來看,本質上合唱直播是在視頻直播的基礎上,混音技術、媒體通道傳數據技術甚至加上連麥直播技術的應用。
一般來說,合唱直播有兩種方案。
【方案一】:
兩個歌手不連麥,混音在終端完成,歌聲、伴奏和歌詞嚴格同步,但是只有一個歌手能聽到另外一個歌手的歌聲。
方案一的架構圖如下:
這里以馬云和王菲線上合唱為例,來說明方案一的業務邏輯:
-
1)王菲的手機從音樂庫下載MV播放,包含伴奏音樂、MV視頻和歌詞;
-
2)王菲伴隨著伴奏音樂演唱,歌聲和伴奏音樂混音,形成音視頻流X推送到實時傳輸網絡;
-
3)馬云的手機從實時網絡拉取音視頻流X播放,伴奏音樂包含王菲的歌聲和MV伴奏;
-
4)馬云伴隨著伴奏音樂演唱,歌聲和伴奏被混音,形成音視頻流Y推送到實時傳輸網絡;
-
5)音視頻流Y經過實時傳輸網絡加速后,被轉推內容分發網絡(CDN)進行分發;
-
6)直播間的觀眾從內容分發網絡拉取音視頻流Y播放。
至此,直播間的觀眾能聽到馬云和王菲合唱的歌聲,好像他們兩個就是在同一個KTV里面合唱一樣。
-
方案一的優點是:兩位歌手的歌聲、畫面和歌詞嚴格同步,觀眾的體驗最優;
-
方案一的不足是:王菲聽不到馬云的歌聲,而馬云能聽到王菲的歌聲,兩位歌手沒有連麥,缺乏互動。
【方案二】:
兩個歌手連麥,混音在云端完成,兩個歌手能相互聽到對方的歌聲,但是歌聲、伴奏和歌詞難以做到嚴格同步。
方案二的架構圖如下:
這里以歌手A和歌手B合唱為例,來說明方案二的業務邏輯:
-
1)歌手A從音樂庫下載伴奏音樂和歌詞,歌手B同樣;
-
2)歌手A隨著伴奏音樂和字幕演唱,歌手B同樣;
-
3)歌手A把采集到的歌聲和視頻,封裝成音視頻流,推送到實時網絡,歌手B同樣;
-
4)歌手A從實時網絡拉取歌手B的音視頻流播放,歌手B同樣,兩個歌手實現連麥互動;
-
5)在云端把歌手A的歌聲、歌手B的歌聲、伴奏音樂混音,封裝成音視頻流;
-
6)在云端把歌詞加入音視頻流的媒體通道傳輸;
-
7)在云端把音視頻流轉推內容分發網絡;
-
8)觀眾們從內容分發網絡拉取音視頻流播放。
這樣可以實現全互動的合唱直播,好像歌手A和歌手B就在同一個K歌房里合唱一樣:
-
1)歌手A和歌手B相互能聽到對方的歌聲;
-
2)歌手A和歌手B跟隨著伴奏一起演唱;
-
3)觀眾們能聽到歌手A和歌手B合唱,歌聲和伴奏還有歌詞大致同步。
-
方案二的優點是:互動感強,兩位歌手能相互聽到對方的歌聲,歌手的體驗最優;
-
方案二的不足是:兩位歌手的歌聲、伴奏還有歌詞很難做到嚴格同步,原因是兩個歌手的歌聲、還有伴奏的音樂(三者對應的時間戳)抵達云端的時間難以做到完全一致,受到網絡延遲的影響較大。
網絡狀況好的情況下,同步效果較好,和方案一相當,網絡不好的情況下,不同步的情況就比較明顯。
本文小結
混音技術作為一項技術,常常被和其它技術靈活組合,來實現具體場景中的玩法創新。上面提到的KTV直播和合唱直播都是混音技術的具體應用。視頻直播作為一個綜合的應用場景,隨著技術和業務的發展,逐漸衍生出眾多的微場景,包括上面提到的兩個微場景。在視頻直播微場景需求的驅動下,各種音視頻技術點靈活組合能衍生出各種技術方案。
總結
以上是生活随笔為你收集整理的实时音频的混音在视频直播中的技术原理和实践总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hbase命令
- 下一篇: 方便好用的论文管理软件EndNote X