在網(wǎng)絡(luò)視頻直播系統(tǒng)的開發(fā)過(guò)程中,必然會(huì)涉及到編碼方式的選擇。目前關(guān)于視頻的編碼主要有兩種方式,一種是硬編碼、一種是軟編碼。在實(shí)際開發(fā)中,若搭建平臺(tái)時(shí)所用的系統(tǒng)不同,兩種編碼的使用方式也會(huì)有所變化。那么這兩種編碼有何不同?它們的優(yōu)勢(shì)和劣勢(shì)分別是什么?如何選擇?下面就隨小編一同看下。
一、軟硬編碼是什么
軟編碼也叫非硬件編碼,若用在直播上,通俗點(diǎn)講,這種方式是直接利用硬件的CPU對(duì)采集到的視頻進(jìn)行編碼。相對(duì)而言,硬編碼則是利用非CPU進(jìn)行編碼,如顯卡的GPU、專用的DSP、FPGA、ASIC芯片等等。
二、軟硬編碼的優(yōu)劣比較
先說(shuō)它們的優(yōu)點(diǎn):軟編碼實(shí)現(xiàn)直接、簡(jiǎn)單,參數(shù)調(diào)整方便,而且升級(jí)比較容易,兼容性好,用在網(wǎng)絡(luò)視頻直播系統(tǒng)上,幾乎能解碼所有的視頻格式文件,畫質(zhì)清晰、畫面精致,而且解碼的速度較快。而硬解碼的主要優(yōu)點(diǎn)就是整體性能好,雖然在低碼率情況下,質(zhì)量相對(duì)于軟編碼來(lái)說(shuō),會(huì)比較差一點(diǎn),但部分產(chǎn)品在GPU硬件平臺(tái)移植了優(yōu)秀的軟編碼算法,質(zhì)量基本等同于軟編碼的效果,而且在這種模式下GPU承擔(dān)起了視頻的編碼工作,因此硬編碼對(duì)于CPU的占用比較低。
再說(shuō)它們的缺點(diǎn):由于軟編碼主要是CPU負(fù)責(zé)的,所以對(duì)于線程不夠的CPU來(lái)講,處理效率可能就不如硬編碼來(lái)的快,而且CPU容易發(fā)熱,從而導(dǎo)致視頻降幀、卡頓,無(wú)法正常錄制。而且采用軟編碼,可能會(huì)使軟件包體變大,從而占用硬件過(guò)多的內(nèi)存。那么對(duì)于硬編碼來(lái)講,就是它的兼容性比不上軟編碼,導(dǎo)致不能全平臺(tái)覆蓋。
三、如何選擇軟硬編碼
從以上可以看出,軟硬編碼的優(yōu)勢(shì)和劣勢(shì)其實(shí)是互補(bǔ)的,根據(jù)平臺(tái)的不同,盡可能揚(yáng)長(zhǎng)避短,提供不同的方案。這里結(jié)合了網(wǎng)上大神的說(shuō)法,給出了一個(gè)選擇方向:以在手機(jī)上構(gòu)建網(wǎng)絡(luò)視頻直播系統(tǒng)為例,如果是使用推流編碼,則推薦安卓4.3以上使用硬編碼,以下使用軟編碼,而iOS使用全部硬編碼。如果是使用播放解碼,不管是安卓還是iOS,都使用軟解碼方案,雖然這樣做不可避免的犧牲功耗,但是在部分細(xì)節(jié)方面表現(xiàn)會(huì)較優(yōu),且可控性強(qiáng),兼容性也強(qiáng),出錯(cuò)情況少。
以上,就是網(wǎng)絡(luò)視頻直播系統(tǒng)開發(fā)過(guò)程中,對(duì)于軟硬編碼的認(rèn)識(shí)和選擇,如果您還有什么疑問(wèn)的話,歡迎留言。
聯(lián)系客服