騰訊多媒體實(shí)驗(yàn)室:視頻編碼技術(shù)在多場(chǎng)景下的應(yīng)用實(shí)踐
大家好,首先感謝TLC大會(huì)組委會(huì)的邀請(qǐng),有這個(gè)機(jī)會(huì)在這里跟大家一起交流分享。我先做個(gè)簡(jiǎn)單的自我介紹。我叫王詩(shī)濤,目前就職于騰訊多媒體實(shí)驗(yàn)室,我的主要研究方向是視頻編解碼和圖像壓縮。我是2013年入職騰訊,先后負(fù)責(zé) QQ視頻通話(huà),騰訊云互動(dòng)直播SDK,騰訊會(huì)議和云游戲等實(shí)時(shí)音視頻場(chǎng)景下的視頻技術(shù)開(kāi)發(fā),同時(shí)我也負(fù)責(zé)圖片壓縮技術(shù)的研發(fā),主導(dǎo)開(kāi)發(fā)了TPG圖片壓縮格式。
本文引用地址:http://2s4d.com/article/202009/418708.htm今天我給大家分享的主要內(nèi)容分為三大部分,第一部分是騰訊會(huì)議的視頻編碼技術(shù)優(yōu)化介紹。第二部分是介紹我們將視頻編碼用于圖像壓縮的探索實(shí)踐。最后一部分會(huì)介紹我們近兩年在云游戲場(chǎng)景上面的一些視頻編碼技術(shù)的優(yōu)化。
1. 騰訊會(huì)議視頻編碼技術(shù)攻堅(jiān)戰(zhàn)
首先我們來(lái)看我們?cè)隍v訊會(huì)議上做的一些視頻技術(shù)優(yōu)化,2020年,對(duì)大家來(lái)講是一個(gè)很不平凡的一年,這一年因?yàn)橐咔榈谋l(fā),改變了大家的工作和生活方式,也正是因?yàn)橐咔樽岒v訊會(huì)議這一款產(chǎn)品備受關(guān)注,成為了爆款。其實(shí)騰訊會(huì)議推出的時(shí)間并不長(zhǎng),我們是在2019年底的時(shí)候才發(fā)布這款產(chǎn)品,發(fā)布不到一個(gè)月,疫情就爆發(fā)了。我記得我們發(fā)布之初的DAU才幾千人,疫情爆發(fā)之后,不到兩個(gè)月的時(shí)間DAU就突破了1000萬(wàn)。因?yàn)橛脩?hù)的爆炸式增長(zhǎng)導(dǎo)致我們的流量帶寬也呈現(xiàn)指數(shù)級(jí)增長(zhǎng),為了節(jié)省帶寬成本,我們?cè)谝曨l編碼這一塊做了大量的優(yōu)化。
1.1 H.265編碼技術(shù)優(yōu)化
首先就是優(yōu)化H.265編碼技術(shù)。我們知道現(xiàn)在主流的視頻編碼格式是H.264和H.265, H.265比H.264的壓縮效率要高50%左右,但是它的編碼復(fù)雜度也會(huì)比H.264高很多。如果要在騰訊會(huì)議這種實(shí)時(shí)場(chǎng)景下應(yīng)用的話(huà),肯定是要做大量的性能優(yōu)化的。我們對(duì)編碼算法的各個(gè)模塊,比如說(shuō)塊劃分,幀內(nèi)幀間預(yù)測(cè)等都做了大量的算法優(yōu)化,包括模式選擇快速算法和提前退出算法,同時(shí)也做了很多工程類(lèi)優(yōu)化。比如說(shuō)優(yōu)化數(shù)據(jù)結(jié)構(gòu),減少內(nèi)存拷貝,匯編優(yōu)化以及多線(xiàn)程優(yōu)化等。經(jīng)過(guò)優(yōu)化之后,我們的編碼器相比于開(kāi)源的X265,無(wú)論是在壓縮效率,還是在編碼速度方面都是有很大的優(yōu)勢(shì)的。我們的編碼速度比X265-Ultrafast還要快一倍以上,同時(shí)壓縮效率高30%以上。
1.2 攝像頭視頻場(chǎng)景下的編碼優(yōu)化
除了編碼內(nèi)核優(yōu)化,我們也針對(duì)視頻會(huì)議這個(gè)場(chǎng)景做了很多專(zhuān)項(xiàng)優(yōu)化,第一個(gè)是ROI編碼,ROI編碼也叫感興趣區(qū)域編碼,對(duì)于會(huì)議里面的攝像頭視頻,大家可能更關(guān)注的是人臉區(qū)域,而對(duì)背景區(qū)域關(guān)注度較低。所以我們采用ROI編碼來(lái)提升人臉區(qū)域清晰度,提升主觀質(zhì)量。ROI編碼包含兩個(gè)模塊,一塊是人臉檢測(cè),或者說(shuō)膚色監(jiān)測(cè),另外一塊是ROI編碼。對(duì)于人臉檢測(cè)模塊,我們采用了快速高效的檢測(cè)算法,每幀1080p圖像的檢測(cè)耗時(shí)可以控制在0.3ms以?xún)?nèi),對(duì)整體編碼性能影響非常小。完成人臉檢測(cè)之后,我們會(huì)在編碼前對(duì)碼率控制進(jìn)行調(diào)整,對(duì)于ROI區(qū)域增加碼率,提升編碼質(zhì)量,對(duì)于非ROI區(qū)域則適當(dāng)降低碼率,以保持總體碼率的平衡。我們的ROI編碼效果是非常明顯的,在低碼率下可以明顯提升視頻主觀質(zhì)量,高碼率下可以節(jié)省20%以上碼率,同時(shí)保持主觀質(zhì)量基本不變。
除了通過(guò)ROI提升編碼效果,我們也在提升視頻網(wǎng)絡(luò)抗性方面做了很多工作。比如SVC編碼技術(shù)。通常視頻會(huì)議是多方接入的,參會(huì)人可能有三五人甚至更多,每個(gè)接入用戶(hù)的網(wǎng)絡(luò)狀態(tài)是不一樣的,有的用戶(hù)網(wǎng)絡(luò)好,有的網(wǎng)絡(luò)狀況很差,這就給編碼端帶來(lái)了難題,如果發(fā)送端為了確保網(wǎng)絡(luò)差的用戶(hù)能正常通信而發(fā)送一個(gè)低碼率視頻,就會(huì)影響到網(wǎng)絡(luò)好的用戶(hù)的視頻體驗(yàn),而如果為了保證網(wǎng)絡(luò)好用戶(hù)的視頻效果發(fā)送高清視頻的話(huà),網(wǎng)絡(luò)差的用戶(hù)的視頻就會(huì)卡死。
為了解決這個(gè)問(wèn)題,我們?cè)诰幋a端采用了SVC編碼技術(shù)。我們將編碼視頻分成三層,其中基本層只能參考基本層,增強(qiáng)層可以參考基本層也可以參考增強(qiáng)層,這樣的話(huà),只要基本層不丟失,那所有的基本層的視頻幀都能正確解碼,不需要申請(qǐng)I幀。這樣做的好處是,對(duì)于網(wǎng)絡(luò)很差的用戶(hù),我們只給他下發(fā)基本層碼流就可以了,保證他的基本通信,而對(duì)于網(wǎng)絡(luò)好的用戶(hù),我們會(huì)下發(fā)所有層,確保用戶(hù)能夠享受到高清流暢的視頻體驗(yàn)。SVC編碼技術(shù)很好的適配了各種網(wǎng)絡(luò)狀況的用戶(hù),避免了一個(gè)接收端的網(wǎng)絡(luò)不好影響到其他接收端的視頻效果。
1.3 屏幕分享場(chǎng)景下的編碼優(yōu)化
前面介紹的是我們?cè)跀z像頭視頻這個(gè)場(chǎng)景上做的一些優(yōu)化,接下來(lái)我再介紹一下我們?cè)谄聊环窒磉@個(gè)場(chǎng)景上面的一些優(yōu)化。屏幕分享是視頻會(huì)議的一個(gè)主流場(chǎng)景,屏幕分享的內(nèi)容是計(jì)算機(jī)生成的屏幕圖像,屏幕圖像和我們用攝像頭采集的視頻,是有很大的不同的。比如說(shuō)屏幕內(nèi)容圖像通常是沒(méi)有噪聲,色調(diào)比較離散,線(xiàn)條比較細(xì)膩,而傳統(tǒng)的攝像頭視頻是有噪聲,色調(diào)連續(xù)的,而且紋理通常比較復(fù)雜。
傳統(tǒng)的視頻編碼技術(shù)采用的預(yù)測(cè)+變換的混合編碼結(jié)構(gòu),它主要針對(duì)的是攝像頭視頻,而對(duì)于屏幕內(nèi)容,它的壓縮效率是不太高的,經(jīng)過(guò)變換編碼后,很多高頻分量會(huì)損失,導(dǎo)致細(xì)節(jié)丟失、為了提升屏幕內(nèi)容的編碼效率,HEVC在16年的時(shí)候?qū)iT(mén)推出了一個(gè)針對(duì)屏幕內(nèi)容編碼的檔次,叫HEVC-SCC。SCC極大的提升了屏幕分享這種場(chǎng)景下的編碼效率。
SCC里面有兩個(gè)關(guān)鍵技術(shù),一個(gè)是幀內(nèi)塊拷貝技術(shù),也叫IBC編碼,IBC編碼的時(shí)候,可以用當(dāng)前幀已經(jīng)重建好的塊作為參考?jí)K,也就是基于當(dāng)前幀的運(yùn)動(dòng)補(bǔ)償。另一個(gè)技術(shù)是調(diào)色板編碼(Palette Mode)技術(shù),調(diào)色板編碼利用顏色表和顏色索引來(lái)完成每個(gè)像素的重建。IBC和Palette編碼對(duì)于屏幕內(nèi)容的壓縮效率的提升效果非常顯著,壓縮效率相比H.265可以提升50%以上。為了提升屏幕分享場(chǎng)景下的壓縮效率,我們?cè)谠芯幋a器基礎(chǔ)上加入了這兩個(gè)工具集,推出了一個(gè)專(zhuān)用于屏幕內(nèi)容壓縮的TSE編碼器。
IBC和Palette編碼雖然壓縮效率很高,但是編碼復(fù)雜度也是挺高的,為了能在視頻會(huì)議這種實(shí)時(shí)場(chǎng)景應(yīng)用,我們對(duì)TSE編碼器做了大量的性能優(yōu)化工作,比如基于hash的運(yùn)動(dòng)估計(jì),快速顏色表生成及查找算法,提前退出算法以及匯編優(yōu)化等。經(jīng)過(guò)優(yōu)化之后,我們的TSE編碼器的總體性能達(dá)到了業(yè)界領(lǐng)先的水平。我們這里有組對(duì)比數(shù)據(jù),編碼效率方面,我們的TSE編碼器比X265-Ultrafast高70%以上,編碼速度不到X265-Ultrafast的一半。除了客觀質(zhì)量方面的提升,TSE對(duì)主觀質(zhì)量的改善也是很明顯的,采用TSE編碼生成的圖像,文字效果要明顯好于X265的編碼效果,另外,TSE編碼輸出的圖像的線(xiàn)條也更加的清晰細(xì)膩。
除了屏幕內(nèi)容編碼技術(shù),我們?cè)谄聊粌?nèi)容的編碼方面,還增加了YUV444編碼模式的支持。由于人眼對(duì)色度分量不太敏感,通常攝像頭視頻一般會(huì)在編碼前對(duì)色度分量進(jìn)行一個(gè)下采樣,編碼的時(shí)候采用YUV420格式,這樣可以節(jié)省帶寬,同時(shí)整體的主觀質(zhì)量影響不大。但是對(duì)于屏幕內(nèi)容序列,因?yàn)楸旧硭纳适欠浅XS富的,如果我們對(duì)色度分量進(jìn)行下采樣的話(huà),會(huì)嚴(yán)重影響圖像的重建效果。而且這種損失是不可逆的,它沒(méi)法通過(guò)后面的編解碼環(huán)節(jié)補(bǔ)償回來(lái)。為了解決色度下采樣帶來(lái)的顏色失真問(wèn)題,我們支持了YUV444編碼模式,YUV444編碼由于沒(méi)有色度下采樣,它編碼之后的圖像視覺(jué)質(zhì)量和原圖非常接近。相比于YUV420編碼,主觀質(zhì)量有很大提升。
2. 視頻編碼在圖像壓縮領(lǐng)域的探索實(shí)踐
前面介紹了我們實(shí)驗(yàn)室在視頻會(huì)議這個(gè)場(chǎng)景上面的一些視頻編碼技術(shù)的優(yōu)化,接下來(lái)第二部分我將介紹一下我們?cè)趫D片壓縮這一塊的一些探索實(shí)踐。
我們?cè)谇皫啄甑臅r(shí)候推出了一個(gè)名為T(mén)PG的圖片壓縮格式,它是一個(gè)基于avs2的圖片壓縮格式,我先簡(jiǎn)單介紹一下我們TPG格式產(chǎn)生的背景。我們?cè)缭?4年、15年的時(shí)候,就開(kāi)始了圖片壓縮的優(yōu)化工作。當(dāng)時(shí)收到很多業(yè)務(wù)的反饋說(shuō)圖片的流量帶寬成本比較大,看我們能不能幫忙節(jié)省圖片帶寬流量成本。當(dāng)時(shí)互聯(lián)網(wǎng)行業(yè)用的比較多的圖片格式是jpeg和webp,jpeg是一個(gè)很古老的格式,它的壓縮效率是比較低的,webp是谷歌在10年左右推出的一個(gè)基于VP8的圖片編碼格式。
我們當(dāng)時(shí)就想,VP8是和H264同一時(shí)代的標(biāo)準(zhǔn),既然可以用VP8來(lái)做圖像壓縮,那為什么不用最新的H.265編碼標(biāo)準(zhǔn)呢,為了驗(yàn)證H.265方案的可行性,我們做了大量實(shí)驗(yàn),發(fā)現(xiàn)采用H.265進(jìn)行圖像壓縮,其壓縮效率要遠(yuǎn)遠(yuǎn)高于jpeg,也大幅領(lǐng)先于webp,也就是說(shuō)采用H.265進(jìn)行圖片壓縮是完全可行的??紤]到H.265的專(zhuān)利風(fēng)險(xiǎn)性,我們就采用了壓縮效率和H.265相當(dāng)?shù)腁VS2作為內(nèi)核,推出了TPG圖片壓縮格式。
我們的TPG圖片編碼系統(tǒng)包括RGB轉(zhuǎn)YUV模塊,編碼模塊,TPG格式封裝幾個(gè)模塊。為了支持一些圖片特有信息,我們的TPG加入了很多功能擴(kuò)展。比如對(duì)Alpha通道的支持,傳統(tǒng)的視頻編碼是沒(méi)法編碼RGBA數(shù)據(jù)的,為了能夠加入Alpha通道信息,我們將RGBA數(shù)據(jù)分離成RGB數(shù)據(jù)和Alpha數(shù)據(jù),然后將兩個(gè)通道的數(shù)據(jù)分別進(jìn)行編碼,最后將編碼后的數(shù)據(jù)合成在一起輸出一個(gè)TPG碼流。還有就是對(duì)于動(dòng)態(tài)圖片格式的支持,我們知道傳統(tǒng)的gif圖像編碼由于沒(méi)有利用圖像之間的相關(guān)性信息,它的壓縮效率是很低的,我們的TPG采用視頻編碼的模式對(duì)動(dòng)圖進(jìn)行壓縮,在保持主觀質(zhì)量基本不變的情況下,編碼效率大大提升,同時(shí),為了和gif保持特性一致,我們?cè)赥PG里面加入了顏色表、延遲時(shí)間等信息,確保TPG的圖片展示效果和gif完全一致。
經(jīng)過(guò)不斷完善,TPG格式的功能不斷健全,壓縮效率優(yōu)勢(shì)明顯,根據(jù)我們的對(duì)比測(cè)試結(jié)果,在同等主觀質(zhì)量下,TPG的壓縮效率比jpeg高45%以上,比png高60%以上,比gif高85%以上。
我們除了優(yōu)化TPG編碼內(nèi)核提升壓縮效率,也實(shí)現(xiàn)了一整套TPG轉(zhuǎn)碼方案。在h5頁(yè)面接入方面,我們和公司內(nèi)的X5內(nèi)核團(tuán)隊(duì)合作,推出了一個(gè)CDN+X5內(nèi)核的無(wú)痛接入方案,X5內(nèi)核里面原生支持我們的TPG格式,在請(qǐng)求圖片的時(shí)候,請(qǐng)求頭里面會(huì)帶上image/tpg標(biāo)識(shí),只要業(yè)務(wù)是用的X5內(nèi)核,業(yè)務(wù)上層不需要做任何改造就可以輕松接入TPG圖片格式;在騰訊云開(kāi)發(fā)接入方面,騰訊云數(shù)據(jù)萬(wàn)象和微信小程序內(nèi)核已集成TPG的轉(zhuǎn)碼方案,接入云開(kāi)發(fā)就直接使用TPG格式;除了H5接入和騰訊云開(kāi)發(fā)的方案,我們也實(shí)現(xiàn)了終端native接入的方案,提供全平臺(tái)的TPG解碼器,業(yè)務(wù)只要集成了我們的解碼器,就可以解碼出RGB數(shù)據(jù),之后完成渲染。
在服務(wù)端,當(dāng)用戶(hù)請(qǐng)求圖片的時(shí)候,首先會(huì)判斷終端是否支持TPG,如果支持TPG的話(huà),就看OC節(jié)點(diǎn)是否有TPG緩存,有緩存就下發(fā)TPG,否則回源查看是否有 TPG副本,如果有就緩存到OC節(jié)點(diǎn)下發(fā)TPG,否則啟動(dòng)TPG的轉(zhuǎn)碼同時(shí)下發(fā)原圖。
前面介紹了我們TPG格式的一些特性以及轉(zhuǎn)碼方案,這里總結(jié)一下TPG的優(yōu)勢(shì)。首先它的壓縮效率高,相比jpeg,png和gif優(yōu)勢(shì)明顯;TPG有完整的解決方案,支持CDN+X5內(nèi)核的H5接入和終端native SDK接入,支持linux、windows,mac,ios,android全平臺(tái),另外為了支持瀏覽器,我們也推出了TPG的js版解碼器;功能方面,TPG增加了對(duì)alpha通道和動(dòng)畫(huà)的支持。
正是由于TPG有這么多的優(yōu)點(diǎn),TPG格式推出后,在公司內(nèi)外得到了廣泛的應(yīng)用。目前公司內(nèi)已經(jīng)有超過(guò)60家業(yè)務(wù)接入了我們的TPG圖片格式。我們可以看下業(yè)務(wù)接入TPG格式后的效果對(duì)比。以手Q H5頁(yè)面為例,采用tpg圖片格式后,手Q H5頁(yè)面的流量節(jié)省了50%以上,除了帶來(lái)流量的節(jié)省,TPG在體驗(yàn)優(yōu)化這一塊的效果也是比較明顯的。這里有一組業(yè)務(wù)的頁(yè)面測(cè)試數(shù)據(jù),采用TPG格式后,頁(yè)面的總圖片大小,減少了近50%,同時(shí)頁(yè)面加載速度提升了近1/3。
為了在行業(yè)內(nèi)進(jìn)一步推廣TPG格式,我們也做了TPG的標(biāo)準(zhǔn)化工作,我們?cè)?7年的時(shí)候向AVS組織提出了建立互聯(lián)網(wǎng)圖像標(biāo)準(zhǔn)的提案,并且成功將TPG納入AVS2的第7部分圖像容器,目前AVS2-P7已經(jīng)在國(guó)家標(biāo)準(zhǔn)的申報(bào)流程中,相信在不久的將來(lái)就會(huì)正式發(fā)布為國(guó)家標(biāo)準(zhǔn)。
3. 云游戲場(chǎng)景下編碼技術(shù)優(yōu)化
前面介紹的是我們?cè)跁?huì)議和圖片壓縮場(chǎng)景的一些技術(shù)優(yōu)化,最后一部分我會(huì)介紹一下我們?cè)谠朴螒驁?chǎng)景下的一些研究。
首先簡(jiǎn)單介紹下什么是云游戲?云游戲是一種以云計(jì)算和串流技術(shù)為基礎(chǔ)的一個(gè)在線(xiàn)游戲技術(shù),它將游戲渲染放到了服務(wù)器端,而不是在用戶(hù)的終端設(shè)備上進(jìn)行本地渲染。云游戲把游戲玩家的操作指令直接發(fā)送到云端,由云端來(lái)完成圖像渲染,渲染后的圖像會(huì)被編碼成一個(gè)視頻流,然后把這個(gè)視頻流發(fā)到用戶(hù)的手機(jī)或者終端設(shè)備上面,完成解碼顯示。也就是在玩游戲的時(shí)候,其實(shí)你看到的是一個(gè)視頻,由于視頻編碼質(zhì)量高,延時(shí)小,所以效果和本地渲染看起來(lái)一樣。
云游戲有什么好處呢?首先,云游戲即開(kāi)即玩,不需要下載。以前我們玩一個(gè)游戲,比如lol或者王者榮耀,我們需要先去下載一個(gè)安裝包,而安裝包一般比較大,這樣既浪費(fèi)用戶(hù)時(shí)間,也占用設(shè)備存儲(chǔ)空間。以前試玩一個(gè)游戲的成本比較高,現(xiàn)在的話(huà),我可以隨時(shí)隨地打開(kāi)就玩,輕松體驗(yàn)各種游戲。
其次,本地游戲需要在本地渲染,對(duì)游戲玩家的硬件設(shè)備配置要求比較高,采用云游戲后,將渲染搬到云端,對(duì)用戶(hù)的終端設(shè)備的配置要求會(huì)大大的降低,以前為了玩一個(gè)重度游戲,需要去網(wǎng)吧,現(xiàn)在在家用一個(gè)普通筆記本,就可以在上面輕松的玩各種大型游戲。
還有一點(diǎn),云游戲解決了跨平臺(tái)兼容的問(wèn)題?,F(xiàn)在MAC電腦的用戶(hù)越來(lái)越多,但是很多游戲是不支持MAC平臺(tái)的。云游戲采用的視頻流方案,解決了各平臺(tái)終端互通的問(wèn)題,MAC,手機(jī)甚至TV都可以玩端游。
云游戲有這么多好處,為什么之前一直沒(méi)有發(fā)展起來(lái)呢?這里簡(jiǎn)單介紹下云游戲發(fā)展歷史。云游戲的概念在2000年左右的時(shí)候就提出來(lái)了。2009年OnLine公司推出了第一款云游戲孤島危機(jī),接下來(lái)的近10年的時(shí)間里面,云游戲發(fā)展比較緩慢。從2018年開(kāi)始,云游戲進(jìn)入了快速發(fā)展時(shí)期,各大巨頭開(kāi)始發(fā)力, Google微軟都推出了自己的云游戲,在騰訊內(nèi)部也有好幾個(gè)云游戲團(tuán)隊(duì),比如 start云游戲,GameMatrix,騰訊即玩,騰訊云也推出了云游戲解決方案。
為什么近兩年云游戲發(fā)展突然加速了呢?我覺(jué)得主要有以下幾個(gè)方面的原因,一個(gè)是云計(jì)算的普及以及邊緣計(jì)算的發(fā)展,包括我們GPU虛擬化技術(shù)的成熟。另一個(gè)關(guān)鍵原因是隨著5G時(shí)代的到來(lái),用戶(hù)的網(wǎng)絡(luò)帶寬越來(lái)越好,而且?guī)挸杀驹絹?lái)越低,可以很好的滿(mǎn)足云游戲?qū)τ诟邘挼囊?;還有就是我們的音視頻技術(shù)的不斷發(fā)展,現(xiàn)在硬件編解碼技術(shù)越來(lái)越成熟了,而且壓縮效率越來(lái)越高,為云游戲的發(fā)展提供了支撐。
云游戲它有幾大模塊,一塊是在云端,云端主要是負(fù)責(zé)渲染和編碼,第二大模塊網(wǎng)絡(luò)傳輸,然后再加上終端的解碼渲染過(guò)程,音視頻編解碼技術(shù)在云游戲里面是一個(gè)比較核心的模塊,云游戲的圖像壓縮質(zhì)量,帶寬成本,游戲時(shí)延等均和編解碼技術(shù)息息相關(guān),為了提升云游戲用戶(hù)體驗(yàn),我們聯(lián)合公司內(nèi)的云游戲團(tuán)隊(duì),一起針對(duì)云游戲場(chǎng)景做了大量視頻技術(shù)優(yōu)化,我們也自研了一套云游戲視頻引擎。
我們的云游戲引擎采用了全鏈路硬件的實(shí)現(xiàn)方案。在云端編碼這塊,我們采用H.265編碼來(lái)提升壓縮效率,支持DX紋理輸入,避免CPU和GPU之間大量的數(shù)據(jù)拷貝。為了節(jié)省流量帶寬,我們?cè)诰幋a策略這一塊做了大量的優(yōu)化,比如說(shuō)采用動(dòng)態(tài)碼率,我們會(huì)在編碼前對(duì)視頻場(chǎng)景進(jìn)行預(yù)分析,如果當(dāng)前畫(huà)面屬于比較靜止的場(chǎng)景,我們會(huì)適當(dāng)降低它的碼率,因?yàn)殪o止場(chǎng)景通常圖像的PSNR比較高,比如在45dB以上,對(duì)于這類(lèi)圖像,即使降低部分碼率,人眼一般感覺(jué)不出來(lái)。
而對(duì)于復(fù)雜運(yùn)動(dòng)區(qū)域,則會(huì)適當(dāng)?shù)奶嵘a率,這樣可以改善大運(yùn)動(dòng)場(chǎng)景下畫(huà)面模糊的問(wèn)題。采用動(dòng)態(tài)碼率技術(shù),不但能夠節(jié)省碼率,視頻主觀質(zhì)量還能得到一定提升。除了動(dòng)態(tài)碼率,我們還加入了一些視頻前處理技術(shù)比如視頻增強(qiáng)來(lái)提升主觀質(zhì)量。另外,我們也使用了ROI編碼技術(shù),可以在主觀質(zhì)量基本不變的情況下,節(jié)省10%左右的碼率。
客戶(hù)端方面,我們windows、mac、ios、android全平臺(tái)支持了H.264、H.265 1080p@60fps硬件解碼,并針對(duì)各平臺(tái)的解碼性能做了大量?jī)?yōu)化。比如針對(duì)Android硬件解碼兼容性差,延時(shí)大等問(wèn)題,我們通過(guò)優(yōu)化解碼出幀機(jī)制,處理囤幀問(wèn)題降低延時(shí),針對(duì)不同芯片下發(fā)不同配置參數(shù),挖掘最大潛能,同時(shí)完善我們的硬件能力檢測(cè)機(jī)制,盡可能覆蓋更多機(jī)型。
同時(shí),我們也做了解碼渲染一體化工作,避免GPU和CPU的數(shù)據(jù)拷貝,提升性能。另外,我們也加入了客戶(hù)端能力上報(bào),異常監(jiān)測(cè)機(jī)制,云端和客戶(hù)端能力協(xié)商機(jī)制,根據(jù)客戶(hù)端反饋動(dòng)態(tài)調(diào)整編碼策略。
經(jīng)過(guò)優(yōu)化之后,我們的云游戲視頻引擎整體性能達(dá)到了業(yè)界領(lǐng)先水平。我們的采集+編碼整體耗時(shí)控制在5ms以?xún)?nèi),客戶(hù)端的解碼+渲染的總耗時(shí),windows平臺(tái)在5ms以?xún)?nèi),MAC在8ms左右,Android手機(jī)的平均耗時(shí)在12ms左右,我們整體的端到端延時(shí)已經(jīng)做到了行業(yè)內(nèi)最低。
目前我們的云游戲視頻方案已經(jīng)在公司內(nèi)最大的云游戲平臺(tái)START全平臺(tái)上線(xiàn),支持了PC,移動(dòng)和TV端,目前可以做到玩云游戲與玩本地游戲在體驗(yàn)上已經(jīng)沒(méi)有差別了。
以上就是我這次分享的主要內(nèi)容,謝謝大家!
評(píng)論