国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
音視頻編解碼--Opus
1 簡(jiǎn)介
Opus 是一個(gè)完全開(kāi)源,免費(fèi)的,通用性高的音頻解碼器。Opus 在網(wǎng)絡(luò)上有著無(wú)與倫比的交互式語(yǔ)音和音樂(lè)傳播功能,但也可以用來(lái)存儲(chǔ),在流媒體上使用。Opus 遵從 Internet Engineering Task Force (IETF) RFC 6716 標(biāo)準(zhǔn),整合了 Skype's SILK 解碼和 Xiph.Org's CELT 解碼的技術(shù)。
新的WebRTC中WebRTC中默認(rèn)是采用Opus編碼,Opus編碼是由silk編碼和celt編碼合并在一起,silk編碼是由skype公司開(kāi)源的一種語(yǔ)音編碼,特別適合人聲,適合于Voip語(yǔ)音通信。celt和mp3,aac類似,適合于傳輸音樂(lè)。
Opus編解碼器的范圍從6 kbit / s的窄帶單聲道語(yǔ)音擴(kuò)展到510 kbit / s的寬帶立體聲音樂(lè),算法延遲范圍從5 ms到65.2 ms。
1.1 控制參數(shù)
Opus編解碼器包含許多控制參數(shù),這些參數(shù)可以在編解碼器的常規(guī)操作期間動(dòng)態(tài)更改,而不會(huì)中斷從編碼器到解碼器的音頻流。 這些參數(shù)僅影響編碼器,因?yàn)樗鼈儗?duì)位流的任何影響都通過(guò)帶內(nèi)信號(hào)通知,這樣解碼器可以解碼任意Opus流而無(wú)需發(fā)送任何帶外信號(hào)。 任何Opus實(shí)施都可以添加或修改這些控制參數(shù),而不會(huì)影響互操作性。 下面列出了參考編碼器中最重要的編碼器控制參數(shù)。
1.1.1 比特率
Opus支持6 kb /秒到510 kb / s的比特率,比特率越高,質(zhì)量越好。對(duì)于20 ms的幀大小,這些是各種配置下Opus的比特率“最佳點(diǎn)”
1.1.2 通道數(shù)
Opus單獨(dú)流可以支持單通道和立體聲。在立體聲解碼器中解碼單聲道幀時(shí),左聲道和右聲道相同,而在單聲道解碼器中解碼立體聲幀時(shí),單聲道輸出是左聲道和右聲道的平均值。
1.1.3 音頻帶寬
Opus支持8 kHz(窄帶)到48 kHz(全頻)。就像通道數(shù)一樣,任何解碼器都可以解碼在任何帶寬下編碼的音頻。
1.1.4 幀長(zhǎng)
Opus支持幀長(zhǎng)度為:2.5、5、10、20、40、60毫秒。Opus還支持將多個(gè)幀組成一個(gè)120ms的包進(jìn)行處理。在實(shí)際應(yīng)用中,每秒發(fā)送較少的數(shù)據(jù)包會(huì)略微提高編碼效率,也會(huì)降低比特率,因?yàn)樗鼫p少了IP,UDP和RTP標(biāo)頭的開(kāi)銷(xiāo)。 但是,這樣操作增加了等待時(shí)間和對(duì)數(shù)據(jù)包丟失的敏感性,丟失一個(gè)數(shù)據(jù)包會(huì)造成更大一部分音頻的丟失。同時(shí)對(duì)于20 ms以上的幀,音頻增益值會(huì)變小。 因此,對(duì)于大多數(shù)應(yīng)用而言,20 ms幀是一個(gè)不錯(cuò)的選擇。
1.1.5 復(fù)雜度
Opus編碼過(guò)程的各個(gè)方面都可以在CPU復(fù)雜度和質(zhì)量/比特率之間進(jìn)行權(quán)衡。 在參考編碼器中,使用從0到10的整數(shù)選擇復(fù)雜度,其中0是最低的復(fù)雜度,而10是最高的。 這種折衷計(jì)算有很多例子,包括:
? 音調(diào)分析白化濾鏡[WHITENING]的順序,
? 短期噪聲整形濾波器的階數(shù),
? 殘留信號(hào)的延遲決策量化中的狀態(tài)數(shù),以及
? 使用某些比特流功能,例如可變的時(shí)頻分辨率和音調(diào)后置濾波器。
1.1.6 丟包彈性
音頻編解碼器通常利用幀間相關(guān)性來(lái)降低誤碼率,但代價(jià)是錯(cuò)誤傳播:當(dāng)丟失一個(gè)數(shù)據(jù)包之后,在解碼器能夠準(zhǔn)確地重建語(yǔ)音信號(hào)之前,需要優(yōu)先接收幾個(gè)數(shù)據(jù)包。 Opus利用幀間相關(guān)性的程度可以即時(shí)調(diào)整,以在比特率和錯(cuò)誤傳播量之間進(jìn)行有效權(quán)衡。
1.1.7 前向糾錯(cuò)(FEC)
提供防止丟包的魯棒性的另一種機(jī)制是帶內(nèi)前向糾錯(cuò)(FEC)。被確定為包含感知性重要語(yǔ)音信息(如開(kāi)始或瞬變)的數(shù)據(jù)包將再次以較低的比特率進(jìn)行編碼,并將此重新編碼的信息添加到后續(xù)數(shù)據(jù)包中。
1.1.8 恒定/可變比特率
使用可變比特率(VBR)(默認(rèn)設(shè)置)時(shí),Opus效率更高。當(dāng)在相對(duì)較慢的連接上需要低延遲傳輸時(shí),也可以使用受約束的VBR。這以模擬“位存儲(chǔ)庫(kù)”的方式使用VBR,基本等效于MP3(MPEG 1,第3層)和AAC(高級(jí)音頻編碼)稱為CBR(即由于位存儲(chǔ)庫(kù)不是真正的CBR)。在某些特殊應(yīng)用中,確實(shí)需要CBR技術(shù),其主要原因有兩個(gè)兩個(gè)方面:
? 當(dāng)傳輸時(shí),每個(gè)壓縮幀僅僅支持一種固定大小的情況
? 當(dāng)一個(gè)高度受限或高度敏感的音頻流被用于加密時(shí),例如是否包含錄制提示、STRP-VBR等。
只要速率不受輸入信號(hào)的影響(例如,為了匹配不斷變化的網(wǎng)絡(luò)條件),即使使用敏感數(shù)據(jù),也可以允許比特率變化。為此,應(yīng)用程序仍應(yīng)在CBR模式下運(yùn)行Opus,但在發(fā)送每個(gè)數(shù)據(jù)包之前需要更改目標(biāo)速率。
1.1.9 不連續(xù)傳輸(DTX)
不連續(xù)傳輸(DTX)降低了靜音或背景噪聲期間的比特率。啟用DTX時(shí),每400毫秒僅編碼一幀。
2 Opus數(shù)據(jù)幀
Opus編碼器產(chǎn)生“數(shù)據(jù)包”,每個(gè)“數(shù)據(jù)包”是一組連續(xù)的字節(jié),旨在作為單個(gè)單元進(jìn)行傳輸。這里描述的數(shù)據(jù)包不包括通常在傳輸層數(shù)據(jù)包中發(fā)現(xiàn)的IP,UDP或RTP包頭部分。一個(gè)數(shù)據(jù)包可以包含多個(gè)音頻幀,只要它們共享一組公共參數(shù)即可,包括編解碼操作模式,音頻帶寬,幀大小和通道數(shù)(單聲道與立體聲)。
2.1 TOC字節(jié)
Opus封包務(wù)必包含至少一個(gè)字節(jié)。 該字節(jié)形成目錄表頭(Table-Of-Contents,TOC),,該字節(jié)協(xié)商數(shù)據(jù)包使用哪種模式和配置。 它由配置編號(hào)“ config”,立體聲標(biāo)志“ s”和幀計(jì)數(shù)Code “ c”組成,其排列如圖1所示。
TOC字節(jié)的前五位(標(biāo)記為“ config”)對(duì)32種可能的操作模式,音頻帶寬和幀大小配置之一進(jìn)行編碼。 如上所述,可以在三種可能的操作模式下組合LP(SILK)層和MDCT(CELT)層:
1.僅用SILK模式:用于帶寬小于或等于WB的低比特率連接,
2.混合模式:以中等比特率進(jìn)行SWB或FB語(yǔ)音的混合(SILK + CELT)模式,以及
3.僅用CELT模式:用于非常低延遲的語(yǔ)音傳輸以及音樂(lè)傳輸(從NB到FB)。
32種可能的配置分別標(biāo)識(shí)數(shù)據(jù)包使用這些操作模式中的哪一種,以及音頻帶寬和幀大小。 表2列出了每種配置的參數(shù)。
每個(gè)范圍中的配置編號(hào)(例如,對(duì)于NB SILK-僅0 ... 3)以相同的順序依次對(duì)應(yīng)幀大小內(nèi)的各個(gè)值大小。 例如,配置0的幀大小為10 ms,配置3的幀大小為60 ms。
標(biāo)記為“ s”的另一位用信號(hào)表示單聲道與立體聲,其中0表示單聲道,而1表示立體聲。
標(biāo)記為“ c”的TOC字節(jié)的其余兩位編碼每個(gè)數(shù)據(jù)包的幀數(shù)(Code 0到3),如下所示:
0:數(shù)據(jù)包中的1個(gè)幀
1:數(shù)據(jù)包中的2個(gè)幀,每個(gè)數(shù)據(jù)幀具有相同的壓縮大小
2:數(shù)據(jù)包中的2個(gè)幀,每個(gè)數(shù)據(jù)幀具有不同的壓縮大小
3:數(shù)據(jù)包中任意數(shù)量的幀
根據(jù)“ c”的值將數(shù)據(jù)包稱為Code 0數(shù)據(jù)包,Code 1數(shù)據(jù)包等。
2.2 幀打包方式
本節(jié)介紹如何根據(jù)TOC字節(jié)中每個(gè)“ c”值打包幀。
2.2.1 幀長(zhǎng)編碼
當(dāng)一個(gè)數(shù)據(jù)包包含多個(gè)VBR幀(即Code2或3)時(shí),這些幀中一個(gè)或多個(gè)的壓縮長(zhǎng)度以一個(gè)或兩個(gè)字節(jié)的序列表示,第一個(gè)字節(jié)的含義如下:
0:無(wú)幀(不連續(xù)傳輸(DTX)或丟失的數(shù)據(jù)包)
1 ... 251:幀的長(zhǎng)度(以字節(jié)為單位)
252 ... 255:第二個(gè)幀的字節(jié)長(zhǎng)度。 總長(zhǎng)度是(second_byte*4)+first_byte
2.2.2 Code 0:?jiǎn)螏?div style="height:15px;">
對(duì)于Code 0的封包來(lái)說(shuō),TOC字節(jié)之后緊跟這一個(gè)幀的N-1個(gè)字節(jié)的壓縮數(shù)據(jù)(其中N是數(shù)據(jù)包的大?。?,如下圖所示:
2.2.3 Code 1:相同壓縮數(shù)據(jù)大小的雙幀包
對(duì)于Code 1的封包來(lái)說(shuō),TOC字節(jié)之后緊跟著是第一幀的(N-1)/2個(gè)字節(jié)的壓縮數(shù)據(jù),然后是第二幀的(N-1)/2個(gè)字節(jié)的壓縮數(shù)據(jù)。針對(duì)Code 1類型數(shù)據(jù)包,其壓縮數(shù)據(jù)的有效載荷字節(jié)的數(shù)目N-1,必須是偶數(shù)。
2.2.4 Code 2:不同壓縮數(shù)據(jù)大小的雙幀包
對(duì)于Code 2數(shù)據(jù)包,TOC字節(jié)之后緊跟著一個(gè)或兩字節(jié)的序列,用于指明第一幀的長(zhǎng)度(在圖4中標(biāo)記為N1),長(zhǎng)度之后跟N1字節(jié)的第一幀壓縮數(shù)據(jù)。 剩余的(N-N1-2) 或 (N-N1-3)字節(jié)是第二幀的壓縮數(shù)據(jù),如圖4所示。Code 2包必須包含足夠的字節(jié)來(lái)表示有效長(zhǎng)度。 例如,一個(gè)1字節(jié)的Code 2數(shù)據(jù)包總是無(wú)效的,而第二個(gè)字節(jié)在252 ... 255范圍內(nèi)的2字節(jié)的Code 2數(shù)據(jù)包也是無(wú)效的。第一幀的長(zhǎng)度N1,也必須是不大于解碼所有Code 2數(shù)據(jù)包的長(zhǎng)度后剩余的有效負(fù)載大小。 例如,這也會(huì)使第二字節(jié)在1 ... 251范圍內(nèi)的2字節(jié)Code 2數(shù)據(jù)包也無(wú)效(唯一有效的2字節(jié)Code 2數(shù)據(jù)包是兩個(gè)幀的長(zhǎng)度均為零的數(shù)據(jù)包)。
2.2.5 Code 3:包含確定幀數(shù)的數(shù)據(jù)包
Code 3數(shù)據(jù)包通過(guò)增加稱為“ Opus填充”的附加填充以明確制定當(dāng)前數(shù)據(jù)包中的幀數(shù),同時(shí)指示此填充是在Opus層而不是在傳輸層添加的。 Code 3的數(shù)據(jù)包必須至少有2個(gè)字節(jié)。 TOC字節(jié)后跟一個(gè)字節(jié),該字節(jié)在第2到7位(圖5中標(biāo)記為“ M”)對(duì)數(shù)據(jù)包中的幀數(shù)進(jìn)行編碼,而第1位指示是否插入了Opus填充(圖5中標(biāo)記為“ p”) ),位0表示VBR信息(在圖5中標(biāo)記為“ v”)。 M的值絕對(duì)不能為零,并且數(shù)據(jù)包中包含的音頻持續(xù)時(shí)間不得超過(guò)120ms。 這將任何幀大小的最大幀數(shù)限制為48(對(duì)于2.5 ms幀),同時(shí)限制最長(zhǎng)幀的幀的大小。 圖5說(shuō)明了幀計(jì)數(shù)字節(jié)的布局。
使用Opus填充時(shí),填充的字節(jié)數(shù)將被編碼,緊跟在幀字節(jié)之后的字節(jié)中。從0 ... 254的值用于指示填充大小的字節(jié)為0 ... 254個(gè)填充字節(jié),該字節(jié)標(biāo)識(shí)總共的填充字節(jié)大小。如果值為255,則標(biāo)識(shí)填充的大小為254個(gè)字節(jié),再加上下一個(gè)字節(jié)中填充值。在這種情況下,數(shù)據(jù)包中必須至少有一個(gè)字節(jié)。額外的填充字節(jié)出現(xiàn)在數(shù)據(jù)包的末尾,必須由編碼器設(shè)置為零,以避免創(chuàng)建隱蔽通道。但是,解碼器必須接受填充字節(jié)的任何值。
盡管此編碼提供了多種方法來(lái)指示給定數(shù)量的填充字節(jié),但是每種編碼都使用不同數(shù)量的字節(jié)來(lái)指示填充大小,因此將在不同程度上增加總數(shù)據(jù)包的大小。例如,要向數(shù)據(jù)包中添加255個(gè)字節(jié),請(qǐng)將填充位p設(shè)置為1,在幀計(jì)數(shù)字節(jié)后插入一個(gè)值為254的單個(gè)字節(jié),然后將254個(gè)填充值為零的填充字節(jié)附加到包的末尾。要向數(shù)據(jù)包中添加256個(gè)字節(jié),請(qǐng)將填充位設(shè)置為1,在幀計(jì)數(shù)字節(jié)后分別插入兩個(gè)字節(jié),其值分別為255和0,并在數(shù)據(jù)包末尾附加254個(gè)填充值為零的填充字節(jié)。通過(guò)多次使用值255,可以創(chuàng)建任何特定的所需大小的數(shù)據(jù)包。令P為用于指示填充大小的標(biāo)頭字節(jié)數(shù)加上其自身的填充字節(jié)數(shù)(即P為添加到數(shù)據(jù)包的總字節(jié)數(shù))。然后,P必須不超過(guò)N-2。
在CBR情況下,令R = N-2-P為減去(可選)填充后數(shù)據(jù)包中剩余的字節(jié)數(shù)。然后,每個(gè)幀的壓縮長(zhǎng)度(以字節(jié)為單位)等于R / M。值R必須是M [R6]的非負(fù)整數(shù)倍。隨后是所有M幀的壓縮數(shù)據(jù),每個(gè)壓縮數(shù)據(jù)的大小為R / M字節(jié),如圖6所示。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
詳解SoundStream:一款端到端的神經(jīng)音頻編解碼器
SoundStream:端到端神經(jīng)音頻編解碼器
Opus 音頻解碼器
語(yǔ)音編碼演進(jìn)與EVS(增強(qiáng)型語(yǔ)音服務(wù))
如何使視頻文件變小,不損失畫(huà)質(zhì),這個(gè)軟件您要了解
IP通信中音頻編解碼技術(shù)與抗丟包技術(shù)概要
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服