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