前沿拓展:
顯卡硬件編碼這個(gè)概念,各位或多或少應(yīng)該都有所耳聞。最早它指的是用GPU的通用計(jì)算能力來(lái)處理視頻編碼這種計(jì)算量龐大的任務(wù)。但隨著硬件的發(fā)展,現(xiàn)在的顯卡硬件編碼已經(jīng)跟十多年前的用CUDA加速編碼不一樣了,現(xiàn)在的顯卡硬件編碼已經(jīng)指的是利用GPU集成的專(zhuān)用硬件單元進(jìn)行編碼**作,因?yàn)槭菍?zhuān)用的電路,其效率相比起用通用計(jì)算來(lái)加速要高出不少,目前AMD、Intel和NVIDIA都已經(jīng)在自家的硬件中加入了硬件編碼相關(guān)的單元,但可能大家并不清楚,本文就簡(jiǎn)單介紹一下三家的硬件編碼技術(shù)和目前的情況。
NVIDIA NVENC
第一要講的是NVIDIA的NVENC,從變革非常大的Kepler架構(gòu)開(kāi)始,NVIDIA就在GPU中加入了專(zhuān)門(mén)用于編碼視頻的硬件單元,并引入了NVENC功能。NVIDIA在每次推出新架構(gòu)的時(shí)候都會(huì)更新一下這個(gè)單元,加入一些新的特性。從Kepler開(kāi)始到Turing,NVENC單元已經(jīng)更新了六代之多了,這里羅列幾個(gè)比較重要的節(jié)點(diǎn):
· 從第二代Maxwell,也就是GM20x芯片開(kāi)始,NVENC支持HEVC的硬編碼
· Pascal開(kāi)始,支持10-bit的HEVC硬編碼
· Turing開(kāi)始,支持HEVC的B幀,大幅減少碼率開(kāi)支
不過(guò)NVENC的支持情況相當(dāng)復(fù)雜,舉例來(lái)說(shuō),同樣屬于Pascal家族,高端的GTX 1070/1080就可以同時(shí)處理兩條視頻流,而中端的GTX 1060就只支持一條流;再比如說(shuō),GTX 1650這款使用小圖靈核心的顯卡的NVENC模塊實(shí)際上是Volta版本的(老黃的刀法可不僅限于GPU的規(guī)模)。對(duì)此,NVIDIA官方提供了一個(gè)非常詳細(xì)的網(wǎng)站供參考:Video Encode and Decode GPU Support Matrix,如果各位想要搞明白自己顯卡的硬件編碼能力,參照這個(gè)網(wǎng)站是肯定沒(méi)有問(wèn)題的。
NVENC只能夠編碼AVC和HEVC,但發(fā)展到現(xiàn)在,它的編碼質(zhì)量已經(jīng)非常優(yōu)秀了,這項(xiàng)功能目前的應(yīng)用還是比較廣的,像NVIDIA自家的GeForce Experience在錄屏的時(shí)候就默認(rèn)會(huì)調(diào)用NVENC。
另外,我們最近對(duì)NVENC在Premiere Pro中的表現(xiàn)進(jìn)行了測(cè)試,詳情可以參考這篇文章:NVIDIA NVENC編碼加速器測(cè)試。
Intel Quick Sync Video
Intel應(yīng)該是這三家中最早開(kāi)始搗鼓硬件編碼電路的,早在一代經(jīng)典的Sandy Bridge,也就是第二代酷睿i系列處理器上面,他們就為核顯模塊加入了Quick Sync Video特性,發(fā)展到現(xiàn)在,也是相當(dāng)成熟穩(wěn)定了。相比起NVENC只是一項(xiàng)針對(duì)視頻編碼的技術(shù)不同的是,QSV中也包含了對(duì)視頻解碼的相關(guān)支持(NV那兒解碼是NVDEC的東西),從Sandy Bridge開(kāi)始到Kaby Lake為止,QSV會(huì)隨著每一代架構(gòu)的演進(jìn)而更新,基本和核顯的代數(shù)是同步的。隨著這幾年Intel在架構(gòu)上的停滯,QSV也沒(méi)有太大的更新。不過(guò)Ice Lake和Tiger Lake上面它還是有一定程度的進(jìn)步的,比如說(shuō)Tiger Lake就將要引入針對(duì)AV1編碼的硬件解碼能力。
在硬件編碼方面,除了AVC和HEVC這兩個(gè)常用的視頻編碼之外,QSV還支持MPEG-2、MJPEG和VP8、VP9的編碼支持。它也是較早被軟件所支持的硬件視頻編解碼技術(shù),比如Adobe Premiere Pro很早就可以利用到它。需要注意的是,要使用QSV,核顯必須處于開(kāi)啟狀態(tài),也就是說(shuō),目前被屏蔽掉核顯的F后綴處理器無(wú)法使用它。
AMD Video Core Next
在高清時(shí)代剛剛拉開(kāi)帷幕的時(shí)候,AMD或者說(shuō),ATI針對(duì)硬解高清視頻搞出的UVD技術(shù)可以說(shuō)是相當(dāng)?shù)捏@艷,不過(guò)在編碼方面,他們就落后了一些。
AMD最早在初代GCN架構(gòu)的顯卡中引入了Video Coding Engine技術(shù),初始版本只支持YUV420的AVC編碼,且不支持B幀。從VCE 3.0版本開(kāi)始支持HEVC的編碼。VCE的最后一個(gè)版本是Vega20 GPU中應(yīng)用的VCE 4.1,在基于RDNA架構(gòu)的Navi芯片上面,它被Video Core Next所取代了。
Video Core Next首次出現(xiàn)是在18年發(fā)布的Raven Ridge系列APU上面,它取代掉了原本的VCE和UVD,是一套新的視頻編解碼解決方案。隨后在Navi 1x系列芯片中,集成了VCN 2.0,但特性較1.0沒(méi)有變化,Renoir APU上面集成了VCN 2.1,未來(lái)的Navi 2x系GPU將集成VCN 3.0。
如何使用硬件編碼技術(shù)?
早幾年軟件廠商并不重視利用硬件編碼技術(shù),不過(guò)如今的PC平臺(tái)硬件或多或少會(huì)支持一種硬件編碼技術(shù),如果沒(méi)法利用的話也算是一種浪費(fèi)。像是OBS這個(gè)常用的錄屏軟件就支持以上這三項(xiàng)硬件編碼技術(shù),在檢測(cè)到系統(tǒng)硬件支持之后會(huì)自動(dòng)在編碼器選項(xiàng)中提供對(duì)應(yīng)的選項(xiàng);而像Adobe這樣在軟件優(yōu)化方面不太上心的公司也在Premiere Pro 14.2版本中加入了對(duì)NVENC和AMF(A**anced Media Framework,AMD的多媒體處理框架,可調(diào)用硬件編碼)的支持。
如果想單獨(dú)調(diào)用GPU硬件編碼模塊去壓視頻,自己又有一定動(dòng)手能力的,可以了解一下日本大神rigaya寫(xiě)的NVEnc、VCEEnc和QSVEnc這三款軟件,現(xiàn)在的FFmpeg中也整合了QSV和NVENC,各大FFmpeg的圖形化前端應(yīng)該也做了相應(yīng)的支持。
順帶一提的是,利用專(zhuān)用單元對(duì)視頻進(jìn)行編解碼**作并不是顯卡或者說(shuō)PC硬件的專(zhuān)利,幾大移動(dòng)SoC廠商早已在旗下的產(chǎn)品中加入了相關(guān)的單元,像蘋(píng)果,從A10開(kāi)始,就在SoC中集成了HEVC編碼單元,未來(lái)給Mac用的自研SoC中肯定也會(huì)有相關(guān)的單元。
總的來(lái)說(shuō),硬件編碼技術(shù)已經(jīng)普及,并可堪一用。
附贈(zèng):硬件編碼技術(shù)質(zhì)量如何?
如果在早幾年用過(guò)硬件編碼的朋友可能會(huì)覺(jué)得,硬件編碼的質(zhì)量較差,但實(shí)際上這個(gè)觀念放到今天已經(jīng)有點(diǎn)不正確了。NVIDIA在最近幾代的NVENC中著重改良了它的質(zhì)量表現(xiàn)。之前NVIDIA官方已經(jīng)提供了他們的測(cè)試,我在業(yè)余用他們的參數(shù)跑了一下 ,并使用Netflix開(kāi)源的客觀視頻質(zhì)量對(duì)比框架vmaf對(duì)壓制后的視頻進(jìn)行評(píng)價(jià)。這里使用的源視頻片段是《你的名字》開(kāi)場(chǎng)不久后的那段“MV”,源視頻是從藍(lán)光原盤(pán)文件中切取獲得。
參數(shù)的話,NVENC組使用的是-c:v h264_nvenc -preset medium -b:v BITRATE -bufsize BITRATE*2 -profile:v high -bf 3 -b_ref_mode 2 -rc-lookahead 20,libx264組使用的是-c:v libx264 -preset medium -b:v BITRATE -bufsize BITRATE*2 -profile:v high,這兩組參數(shù)均參考自官方Blog文章。碼率范圍這邊選擇的比官方文章中的更廣,從2Mbps到20Mbps,2~10Mbps段以1Mbps為間隔,10Mbps以上則以2Mbps為間隔,最終測(cè)試得到的碼率-vmaf分?jǐn)?shù)圖線如下:
可以看到,Turin**段在中低碼率段較Pascal有明顯的提升,在這個(gè)參數(shù)下,兩個(gè)由NVENC編碼得到的片段在絕大部分情況下畫(huà)質(zhì)表現(xiàn)均好于libx264的。不過(guò)這里需要指出的是,官方采用的編碼參數(shù)對(duì)x264是不利的,實(shí)際情況中,壓制組會(huì)使用更為復(fù)雜的控制參數(shù)來(lái)達(dá)到一個(gè)碼率-畫(huà)質(zhì)的平衡。不過(guò)對(duì)于簡(jiǎn)單的編碼,NVENC確實(shí)贏了。
拓展知識(shí):
前沿拓展:
顯卡硬件編碼這個(gè)概念,各位或多或少應(yīng)該都有所耳聞。最早它指的是用GPU的通用計(jì)算能力來(lái)處理視頻編碼這種計(jì)算量龐大的任務(wù)。但隨著硬件的發(fā)展,現(xiàn)在的顯卡硬件編碼已經(jīng)跟十多年前的用CUDA加速編碼不一樣了,現(xiàn)在的顯卡硬件編碼已經(jīng)指的是利用GPU集成的專(zhuān)用硬件單元進(jìn)行編碼**作,因?yàn)槭菍?zhuān)用的電路,其效率相比起用通用計(jì)算來(lái)加速要高出不少,目前AMD、Intel和NVIDIA都已經(jīng)在自家的硬件中加入了硬件編碼相關(guān)的單元,但可能大家并不清楚,本文就簡(jiǎn)單介紹一下三家的硬件編碼技術(shù)和目前的情況。
NVIDIA NVENC
第一要講的是NVIDIA的NVENC,從變革非常大的Kepler架構(gòu)開(kāi)始,NVIDIA就在GPU中加入了專(zhuān)門(mén)用于編碼視頻的硬件單元,并引入了NVENC功能。NVIDIA在每次推出新架構(gòu)的時(shí)候都會(huì)更新一下這個(gè)單元,加入一些新的特性。從Kepler開(kāi)始到Turing,NVENC單元已經(jīng)更新了六代之多了,這里羅列幾個(gè)比較重要的節(jié)點(diǎn):
· 從第二代Maxwell,也就是GM20x芯片開(kāi)始,NVENC支持HEVC的硬編碼
· Pascal開(kāi)始,支持10-bit的HEVC硬編碼
· Turing開(kāi)始,支持HEVC的B幀,大幅減少碼率開(kāi)支
不過(guò)NVENC的支持情況相當(dāng)復(fù)雜,舉例來(lái)說(shuō),同樣屬于Pascal家族,高端的GTX 1070/1080就可以同時(shí)處理兩條視頻流,而中端的GTX 1060就只支持一條流;再比如說(shuō),GTX 1650這款使用小圖靈核心的顯卡的NVENC模塊實(shí)際上是Volta版本的(老黃的刀法可不僅限于GPU的規(guī)模)。對(duì)此,NVIDIA官方提供了一個(gè)非常詳細(xì)的網(wǎng)站供參考:Video Encode and Decode GPU Support Matrix,如果各位想要搞明白自己顯卡的硬件編碼能力,參照這個(gè)網(wǎng)站是肯定沒(méi)有問(wèn)題的。
NVENC只能夠編碼AVC和HEVC,但發(fā)展到現(xiàn)在,它的編碼質(zhì)量已經(jīng)非常優(yōu)秀了,這項(xiàng)功能目前的應(yīng)用還是比較廣的,像NVIDIA自家的GeForce Experience在錄屏的時(shí)候就默認(rèn)會(huì)調(diào)用NVENC。
另外,我們最近對(duì)NVENC在Premiere Pro中的表現(xiàn)進(jìn)行了測(cè)試,詳情可以參考這篇文章:NVIDIA NVENC編碼加速器測(cè)試。
Intel Quick Sync Video
Intel應(yīng)該是這三家中最早開(kāi)始搗鼓硬件編碼電路的,早在一代經(jīng)典的Sandy Bridge,也就是第二代酷睿i系列處理器上面,他們就為核顯模塊加入了Quick Sync Video特性,發(fā)展到現(xiàn)在,也是相當(dāng)成熟穩(wěn)定了。相比起NVENC只是一項(xiàng)針對(duì)視頻編碼的技術(shù)不同的是,QSV中也包含了對(duì)視頻解碼的相關(guān)支持(NV那兒解碼是NVDEC的東西),從Sandy Bridge開(kāi)始到Kaby Lake為止,QSV會(huì)隨著每一代架構(gòu)的演進(jìn)而更新,基本和核顯的代數(shù)是同步的。隨著這幾年Intel在架構(gòu)上的停滯,QSV也沒(méi)有太大的更新。不過(guò)Ice Lake和Tiger Lake上面它還是有一定程度的進(jìn)步的,比如說(shuō)Tiger Lake就將要引入針對(duì)AV1編碼的硬件解碼能力。
在硬件編碼方面,除了AVC和HEVC這兩個(gè)常用的視頻編碼之外,QSV還支持MPEG-2、MJPEG和VP8、VP9的編碼支持。它也是較早被軟件所支持的硬件視頻編解碼技術(shù),比如Adobe Premiere Pro很早就可以利用到它。需要注意的是,要使用QSV,核顯必須處于開(kāi)啟狀態(tài),也就是說(shuō),目前被屏蔽掉核顯的F后綴處理器無(wú)法使用它。
AMD Video Core Next
在高清時(shí)代剛剛拉開(kāi)帷幕的時(shí)候,AMD或者說(shuō),ATI針對(duì)硬解高清視頻搞出的UVD技術(shù)可以說(shuō)是相當(dāng)?shù)捏@艷,不過(guò)在編碼方面,他們就落后了一些。
AMD最早在初代GCN架構(gòu)的顯卡中引入了Video Coding Engine技術(shù),初始版本只支持YUV420的AVC編碼,且不支持B幀。從VCE 3.0版本開(kāi)始支持HEVC的編碼。VCE的最后一個(gè)版本是Vega20 GPU中應(yīng)用的VCE 4.1,在基于RDNA架構(gòu)的Navi芯片上面,它被Video Core Next所取代了。
Video Core Next首次出現(xiàn)是在18年發(fā)布的Raven Ridge系列APU上面,它取代掉了原本的VCE和UVD,是一套新的視頻編解碼解決方案。隨后在Navi 1x系列芯片中,集成了VCN 2.0,但特性較1.0沒(méi)有變化,Renoir APU上面集成了VCN 2.1,未來(lái)的Navi 2x系GPU將集成VCN 3.0。
如何使用硬件編碼技術(shù)?
早幾年軟件廠商并不重視利用硬件編碼技術(shù),不過(guò)如今的PC平臺(tái)硬件或多或少會(huì)支持一種硬件編碼技術(shù),如果沒(méi)法利用的話也算是一種浪費(fèi)。像是OBS這個(gè)常用的錄屏軟件就支持以上這三項(xiàng)硬件編碼技術(shù),在檢測(cè)到系統(tǒng)硬件支持之后會(huì)自動(dòng)在編碼器選項(xiàng)中提供對(duì)應(yīng)的選項(xiàng);而像Adobe這樣在軟件優(yōu)化方面不太上心的公司也在Premiere Pro 14.2版本中加入了對(duì)NVENC和AMF(A**anced Media Framework,AMD的多媒體處理框架,可調(diào)用硬件編碼)的支持。
如果想單獨(dú)調(diào)用GPU硬件編碼模塊去壓視頻,自己又有一定動(dòng)手能力的,可以了解一下日本大神rigaya寫(xiě)的NVEnc、VCEEnc和QSVEnc這三款軟件,現(xiàn)在的FFmpeg中也整合了QSV和NVENC,各大FFmpeg的圖形化前端應(yīng)該也做了相應(yīng)的支持。
順帶一提的是,利用專(zhuān)用單元對(duì)視頻進(jìn)行編解碼**作并不是顯卡或者說(shuō)PC硬件的專(zhuān)利,幾大移動(dòng)SoC廠商早已在旗下的產(chǎn)品中加入了相關(guān)的單元,像蘋(píng)果,從A10開(kāi)始,就在SoC中集成了HEVC編碼單元,未來(lái)給Mac用的自研SoC中肯定也會(huì)有相關(guān)的單元。
總的來(lái)說(shuō),硬件編碼技術(shù)已經(jīng)普及,并可堪一用。
附贈(zèng):硬件編碼技術(shù)質(zhì)量如何?
如果在早幾年用過(guò)硬件編碼的朋友可能會(huì)覺(jué)得,硬件編碼的質(zhì)量較差,但實(shí)際上這個(gè)觀念放到今天已經(jīng)有點(diǎn)不正確了。NVIDIA在最近幾代的NVENC中著重改良了它的質(zhì)量表現(xiàn)。之前NVIDIA官方已經(jīng)提供了他們的測(cè)試,我在業(yè)余用他們的參數(shù)跑了一下 ,并使用Netflix開(kāi)源的客觀視頻質(zhì)量對(duì)比框架vmaf對(duì)壓制后的視頻進(jìn)行評(píng)價(jià)。這里使用的源視頻片段是《你的名字》開(kāi)場(chǎng)不久后的那段“MV”,源視頻是從藍(lán)光原盤(pán)文件中切取獲得。
參數(shù)的話,NVENC組使用的是-c:v h264_nvenc -preset medium -b:v BITRATE -bufsize BITRATE*2 -profile:v high -bf 3 -b_ref_mode 2 -rc-lookahead 20,libx264組使用的是-c:v libx264 -preset medium -b:v BITRATE -bufsize BITRATE*2 -profile:v high,這兩組參數(shù)均參考自官方Blog文章。碼率范圍這邊選擇的比官方文章中的更廣,從2Mbps到20Mbps,2~10Mbps段以1Mbps為間隔,10Mbps以上則以2Mbps為間隔,最終測(cè)試得到的碼率-vmaf分?jǐn)?shù)圖線如下:
可以看到,Turin**段在中低碼率段較Pascal有明顯的提升,在這個(gè)參數(shù)下,兩個(gè)由NVENC編碼得到的片段在絕大部分情況下畫(huà)質(zhì)表現(xiàn)均好于libx264的。不過(guò)這里需要指出的是,官方采用的編碼參數(shù)對(duì)x264是不利的,實(shí)際情況中,壓制組會(huì)使用更為復(fù)雜的控制參數(shù)來(lái)達(dá)到一個(gè)碼率-畫(huà)質(zhì)的平衡。不過(guò)對(duì)于簡(jiǎn)單的編碼,NVENC確實(shí)贏了。
拓展知識(shí):
前沿拓展:
顯卡硬件編碼這個(gè)概念,各位或多或少應(yīng)該都有所耳聞。最早它指的是用GPU的通用計(jì)算能力來(lái)處理視頻編碼這種計(jì)算量龐大的任務(wù)。但隨著硬件的發(fā)展,現(xiàn)在的顯卡硬件編碼已經(jīng)跟十多年前的用CUDA加速編碼不一樣了,現(xiàn)在的顯卡硬件編碼已經(jīng)指的是利用GPU集成的專(zhuān)用硬件單元進(jìn)行編碼**作,因?yàn)槭菍?zhuān)用的電路,其效率相比起用通用計(jì)算來(lái)加速要高出不少,目前AMD、Intel和NVIDIA都已經(jīng)在自家的硬件中加入了硬件編碼相關(guān)的單元,但可能大家并不清楚,本文就簡(jiǎn)單介紹一下三家的硬件編碼技術(shù)和目前的情況。
NVIDIA NVENC
第一要講的是NVIDIA的NVENC,從變革非常大的Kepler架構(gòu)開(kāi)始,NVIDIA就在GPU中加入了專(zhuān)門(mén)用于編碼視頻的硬件單元,并引入了NVENC功能。NVIDIA在每次推出新架構(gòu)的時(shí)候都會(huì)更新一下這個(gè)單元,加入一些新的特性。從Kepler開(kāi)始到Turing,NVENC單元已經(jīng)更新了六代之多了,這里羅列幾個(gè)比較重要的節(jié)點(diǎn):
· 從第二代Maxwell,也就是GM20x芯片開(kāi)始,NVENC支持HEVC的硬編碼
· Pascal開(kāi)始,支持10-bit的HEVC硬編碼
· Turing開(kāi)始,支持HEVC的B幀,大幅減少碼率開(kāi)支
不過(guò)NVENC的支持情況相當(dāng)復(fù)雜,舉例來(lái)說(shuō),同樣屬于Pascal家族,高端的GTX 1070/1080就可以同時(shí)處理兩條視頻流,而中端的GTX 1060就只支持一條流;再比如說(shuō),GTX 1650這款使用小圖靈核心的顯卡的NVENC模塊實(shí)際上是Volta版本的(老黃的刀法可不僅限于GPU的規(guī)模)。對(duì)此,NVIDIA官方提供了一個(gè)非常詳細(xì)的網(wǎng)站供參考:Video Encode and Decode GPU Support Matrix,如果各位想要搞明白自己顯卡的硬件編碼能力,參照這個(gè)網(wǎng)站是肯定沒(méi)有問(wèn)題的。
NVENC只能夠編碼AVC和HEVC,但發(fā)展到現(xiàn)在,它的編碼質(zhì)量已經(jīng)非常優(yōu)秀了,這項(xiàng)功能目前的應(yīng)用還是比較廣的,像NVIDIA自家的GeForce Experience在錄屏的時(shí)候就默認(rèn)會(huì)調(diào)用NVENC。
另外,我們最近對(duì)NVENC在Premiere Pro中的表現(xiàn)進(jìn)行了測(cè)試,詳情可以參考這篇文章:NVIDIA NVENC編碼加速器測(cè)試。
Intel Quick Sync Video
Intel應(yīng)該是這三家中最早開(kāi)始搗鼓硬件編碼電路的,早在一代經(jīng)典的Sandy Bridge,也就是第二代酷睿i系列處理器上面,他們就為核顯模塊加入了Quick Sync Video特性,發(fā)展到現(xiàn)在,也是相當(dāng)成熟穩(wěn)定了。相比起NVENC只是一項(xiàng)針對(duì)視頻編碼的技術(shù)不同的是,QSV中也包含了對(duì)視頻解碼的相關(guān)支持(NV那兒解碼是NVDEC的東西),從Sandy Bridge開(kāi)始到Kaby Lake為止,QSV會(huì)隨著每一代架構(gòu)的演進(jìn)而更新,基本和核顯的代數(shù)是同步的。隨著這幾年Intel在架構(gòu)上的停滯,QSV也沒(méi)有太大的更新。不過(guò)Ice Lake和Tiger Lake上面它還是有一定程度的進(jìn)步的,比如說(shuō)Tiger Lake就將要引入針對(duì)AV1編碼的硬件解碼能力。
在硬件編碼方面,除了AVC和HEVC這兩個(gè)常用的視頻編碼之外,QSV還支持MPEG-2、MJPEG和VP8、VP9的編碼支持。它也是較早被軟件所支持的硬件視頻編解碼技術(shù),比如Adobe Premiere Pro很早就可以利用到它。需要注意的是,要使用QSV,核顯必須處于開(kāi)啟狀態(tài),也就是說(shuō),目前被屏蔽掉核顯的F后綴處理器無(wú)法使用它。
AMD Video Core Next
在高清時(shí)代剛剛拉開(kāi)帷幕的時(shí)候,AMD或者說(shuō),ATI針對(duì)硬解高清視頻搞出的UVD技術(shù)可以說(shuō)是相當(dāng)?shù)捏@艷,不過(guò)在編碼方面,他們就落后了一些。
AMD最早在初代GCN架構(gòu)的顯卡中引入了Video Coding Engine技術(shù),初始版本只支持YUV420的AVC編碼,且不支持B幀。從VCE 3.0版本開(kāi)始支持HEVC的編碼。VCE的最后一個(gè)版本是Vega20 GPU中應(yīng)用的VCE 4.1,在基于RDNA架構(gòu)的Navi芯片上面,它被Video Core Next所取代了。
Video Core Next首次出現(xiàn)是在18年發(fā)布的Raven Ridge系列APU上面,它取代掉了原本的VCE和UVD,是一套新的視頻編解碼解決方案。隨后在Navi 1x系列芯片中,集成了VCN 2.0,但特性較1.0沒(méi)有變化,Renoir APU上面集成了VCN 2.1,未來(lái)的Navi 2x系GPU將集成VCN 3.0。
如何使用硬件編碼技術(shù)?
早幾年軟件廠商并不重視利用硬件編碼技術(shù),不過(guò)如今的PC平臺(tái)硬件或多或少會(huì)支持一種硬件編碼技術(shù),如果沒(méi)法利用的話也算是一種浪費(fèi)。像是OBS這個(gè)常用的錄屏軟件就支持以上這三項(xiàng)硬件編碼技術(shù),在檢測(cè)到系統(tǒng)硬件支持之后會(huì)自動(dòng)在編碼器選項(xiàng)中提供對(duì)應(yīng)的選項(xiàng);而像Adobe這樣在軟件優(yōu)化方面不太上心的公司也在Premiere Pro 14.2版本中加入了對(duì)NVENC和AMF(A**anced Media Framework,AMD的多媒體處理框架,可調(diào)用硬件編碼)的支持。
如果想單獨(dú)調(diào)用GPU硬件編碼模塊去壓視頻,自己又有一定動(dòng)手能力的,可以了解一下日本大神rigaya寫(xiě)的NVEnc、VCEEnc和QSVEnc這三款軟件,現(xiàn)在的FFmpeg中也整合了QSV和NVENC,各大FFmpeg的圖形化前端應(yīng)該也做了相應(yīng)的支持。
順帶一提的是,利用專(zhuān)用單元對(duì)視頻進(jìn)行編解碼**作并不是顯卡或者說(shuō)PC硬件的專(zhuān)利,幾大移動(dòng)SoC廠商早已在旗下的產(chǎn)品中加入了相關(guān)的單元,像蘋(píng)果,從A10開(kāi)始,就在SoC中集成了HEVC編碼單元,未來(lái)給Mac用的自研SoC中肯定也會(huì)有相關(guān)的單元。
總的來(lái)說(shuō),硬件編碼技術(shù)已經(jīng)普及,并可堪一用。
附贈(zèng):硬件編碼技術(shù)質(zhì)量如何?
如果在早幾年用過(guò)硬件編碼的朋友可能會(huì)覺(jué)得,硬件編碼的質(zhì)量較差,但實(shí)際上這個(gè)觀念放到今天已經(jīng)有點(diǎn)不正確了。NVIDIA在最近幾代的NVENC中著重改良了它的質(zhì)量表現(xiàn)。之前NVIDIA官方已經(jīng)提供了他們的測(cè)試,我在業(yè)余用他們的參數(shù)跑了一下 ,并使用Netflix開(kāi)源的客觀視頻質(zhì)量對(duì)比框架vmaf對(duì)壓制后的視頻進(jìn)行評(píng)價(jià)。這里使用的源視頻片段是《你的名字》開(kāi)場(chǎng)不久后的那段“MV”,源視頻是從藍(lán)光原盤(pán)文件中切取獲得。
參數(shù)的話,NVENC組使用的是-c:v h264_nvenc -preset medium -b:v BITRATE -bufsize BITRATE*2 -profile:v high -bf 3 -b_ref_mode 2 -rc-lookahead 20,libx264組使用的是-c:v libx264 -preset medium -b:v BITRATE -bufsize BITRATE*2 -profile:v high,這兩組參數(shù)均參考自官方Blog文章。碼率范圍這邊選擇的比官方文章中的更廣,從2Mbps到20Mbps,2~10Mbps段以1Mbps為間隔,10Mbps以上則以2Mbps為間隔,最終測(cè)試得到的碼率-vmaf分?jǐn)?shù)圖線如下:
可以看到,Turin**段在中低碼率段較Pascal有明顯的提升,在這個(gè)參數(shù)下,兩個(gè)由NVENC編碼得到的片段在絕大部分情況下畫(huà)質(zhì)表現(xiàn)均好于libx264的。不過(guò)這里需要指出的是,官方采用的編碼參數(shù)對(duì)x264是不利的,實(shí)際情況中,壓制組會(huì)使用更為復(fù)雜的控制參數(shù)來(lái)達(dá)到一個(gè)碼率-畫(huà)質(zhì)的平衡。不過(guò)對(duì)于簡(jiǎn)單的編碼,NVENC確實(shí)贏了。
拓展知識(shí):
前沿拓展:
顯卡硬件編碼這個(gè)概念,各位或多或少應(yīng)該都有所耳聞。最早它指的是用GPU的通用計(jì)算能力來(lái)處理視頻編碼這種計(jì)算量龐大的任務(wù)。但隨著硬件的發(fā)展,現(xiàn)在的顯卡硬件編碼已經(jīng)跟十多年前的用CUDA加速編碼不一樣了,現(xiàn)在的顯卡硬件編碼已經(jīng)指的是利用GPU集成的專(zhuān)用硬件單元進(jìn)行編碼**作,因?yàn)槭菍?zhuān)用的電路,其效率相比起用通用計(jì)算來(lái)加速要高出不少,目前AMD、Intel和NVIDIA都已經(jīng)在自家的硬件中加入了硬件編碼相關(guān)的單元,但可能大家并不清楚,本文就簡(jiǎn)單介紹一下三家的硬件編碼技術(shù)和目前的情況。
NVIDIA NVENC
第一要講的是NVIDIA的NVENC,從變革非常大的Kepler架構(gòu)開(kāi)始,NVIDIA就在GPU中加入了專(zhuān)門(mén)用于編碼視頻的硬件單元,并引入了NVENC功能。NVIDIA在每次推出新架構(gòu)的時(shí)候都會(huì)更新一下這個(gè)單元,加入一些新的特性。從Kepler開(kāi)始到Turing,NVENC單元已經(jīng)更新了六代之多了,這里羅列幾個(gè)比較重要的節(jié)點(diǎn):
· 從第二代Maxwell,也就是GM20x芯片開(kāi)始,NVENC支持HEVC的硬編碼
· Pascal開(kāi)始,支持10-bit的HEVC硬編碼
· Turing開(kāi)始,支持HEVC的B幀,大幅減少碼率開(kāi)支
不過(guò)NVENC的支持情況相當(dāng)復(fù)雜,舉例來(lái)說(shuō),同樣屬于Pascal家族,高端的GTX 1070/1080就可以同時(shí)處理兩條視頻流,而中端的GTX 1060就只支持一條流;再比如說(shuō),GTX 1650這款使用小圖靈核心的顯卡的NVENC模塊實(shí)際上是Volta版本的(老黃的刀法可不僅限于GPU的規(guī)模)。對(duì)此,NVIDIA官方提供了一個(gè)非常詳細(xì)的網(wǎng)站供參考:Video Encode and Decode GPU Support Matrix,如果各位想要搞明白自己顯卡的硬件編碼能力,參照這個(gè)網(wǎng)站是肯定沒(méi)有問(wèn)題的。
NVENC只能夠編碼AVC和HEVC,但發(fā)展到現(xiàn)在,它的編碼質(zhì)量已經(jīng)非常優(yōu)秀了,這項(xiàng)功能目前的應(yīng)用還是比較廣的,像NVIDIA自家的GeForce Experience在錄屏的時(shí)候就默認(rèn)會(huì)調(diào)用NVENC。
另外,我們最近對(duì)NVENC在Premiere Pro中的表現(xiàn)進(jìn)行了測(cè)試,詳情可以參考這篇文章:NVIDIA NVENC編碼加速器測(cè)試。
Intel Quick Sync Video
Intel應(yīng)該是這三家中最早開(kāi)始搗鼓硬件編碼電路的,早在一代經(jīng)典的Sandy Bridge,也就是第二代酷睿i系列處理器上面,他們就為核顯模塊加入了Quick Sync Video特性,發(fā)展到現(xiàn)在,也是相當(dāng)成熟穩(wěn)定了。相比起NVENC只是一項(xiàng)針對(duì)視頻編碼的技術(shù)不同的是,QSV中也包含了對(duì)視頻解碼的相關(guān)支持(NV那兒解碼是NVDEC的東西),從Sandy Bridge開(kāi)始到Kaby Lake為止,QSV會(huì)隨著每一代架構(gòu)的演進(jìn)而更新,基本和核顯的代數(shù)是同步的。隨著這幾年Intel在架構(gòu)上的停滯,QSV也沒(méi)有太大的更新。不過(guò)Ice Lake和Tiger Lake上面它還是有一定程度的進(jìn)步的,比如說(shuō)Tiger Lake就將要引入針對(duì)AV1編碼的硬件解碼能力。
在硬件編碼方面,除了AVC和HEVC這兩個(gè)常用的視頻編碼之外,QSV還支持MPEG-2、MJPEG和VP8、VP9的編碼支持。它也是較早被軟件所支持的硬件視頻編解碼技術(shù),比如Adobe Premiere Pro很早就可以利用到它。需要注意的是,要使用QSV,核顯必須處于開(kāi)啟狀態(tài),也就是說(shuō),目前被屏蔽掉核顯的F后綴處理器無(wú)法使用它。
AMD Video Core Next
在高清時(shí)代剛剛拉開(kāi)帷幕的時(shí)候,AMD或者說(shuō),ATI針對(duì)硬解高清視頻搞出的UVD技術(shù)可以說(shuō)是相當(dāng)?shù)捏@艷,不過(guò)在編碼方面,他們就落后了一些。
AMD最早在初代GCN架構(gòu)的顯卡中引入了Video Coding Engine技術(shù),初始版本只支持YUV420的AVC編碼,且不支持B幀。從VCE 3.0版本開(kāi)始支持HEVC的編碼。VCE的最后一個(gè)版本是Vega20 GPU中應(yīng)用的VCE 4.1,在基于RDNA架構(gòu)的Navi芯片上面,它被Video Core Next所取代了。
Video Core Next首次出現(xiàn)是在18年發(fā)布的Raven Ridge系列APU上面,它取代掉了原本的VCE和UVD,是一套新的視頻編解碼解決方案。隨后在Navi 1x系列芯片中,集成了VCN 2.0,但特性較1.0沒(méi)有變化,Renoir APU上面集成了VCN 2.1,未來(lái)的Navi 2x系GPU將集成VCN 3.0。
如何使用硬件編碼技術(shù)?
早幾年軟件廠商并不重視利用硬件編碼技術(shù),不過(guò)如今的PC平臺(tái)硬件或多或少會(huì)支持一種硬件編碼技術(shù),如果沒(méi)法利用的話也算是一種浪費(fèi)。像是OBS這個(gè)常用的錄屏軟件就支持以上這三項(xiàng)硬件編碼技術(shù),在檢測(cè)到系統(tǒng)硬件支持之后會(huì)自動(dòng)在編碼器選項(xiàng)中提供對(duì)應(yīng)的選項(xiàng);而像Adobe這樣在軟件優(yōu)化方面不太上心的公司也在Premiere Pro 14.2版本中加入了對(duì)NVENC和AMF(A**anced Media Framework,AMD的多媒體處理框架,可調(diào)用硬件編碼)的支持。
如果想單獨(dú)調(diào)用GPU硬件編碼模塊去壓視頻,自己又有一定動(dòng)手能力的,可以了解一下日本大神rigaya寫(xiě)的NVEnc、VCEEnc和QSVEnc這三款軟件,現(xiàn)在的FFmpeg中也整合了QSV和NVENC,各大FFmpeg的圖形化前端應(yīng)該也做了相應(yīng)的支持。
順帶一提的是,利用專(zhuān)用單元對(duì)視頻進(jìn)行編解碼**作并不是顯卡或者說(shuō)PC硬件的專(zhuān)利,幾大移動(dòng)SoC廠商早已在旗下的產(chǎn)品中加入了相關(guān)的單元,像蘋(píng)果,從A10開(kāi)始,就在SoC中集成了HEVC編碼單元,未來(lái)給Mac用的自研SoC中肯定也會(huì)有相關(guān)的單元。
總的來(lái)說(shuō),硬件編碼技術(shù)已經(jīng)普及,并可堪一用。
附贈(zèng):硬件編碼技術(shù)質(zhì)量如何?
如果在早幾年用過(guò)硬件編碼的朋友可能會(huì)覺(jué)得,硬件編碼的質(zhì)量較差,但實(shí)際上這個(gè)觀念放到今天已經(jīng)有點(diǎn)不正確了。NVIDIA在最近幾代的NVENC中著重改良了它的質(zhì)量表現(xiàn)。之前NVIDIA官方已經(jīng)提供了他們的測(cè)試,我在業(yè)余用他們的參數(shù)跑了一下 ,并使用Netflix開(kāi)源的客觀視頻質(zhì)量對(duì)比框架vmaf對(duì)壓制后的視頻進(jìn)行評(píng)價(jià)。這里使用的源視頻片段是《你的名字》開(kāi)場(chǎng)不久后的那段“MV”,源視頻是從藍(lán)光原盤(pán)文件中切取獲得。
參數(shù)的話,NVENC組使用的是-c:v h264_nvenc -preset medium -b:v BITRATE -bufsize BITRATE*2 -profile:v high -bf 3 -b_ref_mode 2 -rc-lookahead 20,libx264組使用的是-c:v libx264 -preset medium -b:v BITRATE -bufsize BITRATE*2 -profile:v high,這兩組參數(shù)均參考自官方Blog文章。碼率范圍這邊選擇的比官方文章中的更廣,從2Mbps到20Mbps,2~10Mbps段以1Mbps為間隔,10Mbps以上則以2Mbps為間隔,最終測(cè)試得到的碼率-vmaf分?jǐn)?shù)圖線如下:
可以看到,Turin**段在中低碼率段較Pascal有明顯的提升,在這個(gè)參數(shù)下,兩個(gè)由NVENC編碼得到的片段在絕大部分情況下畫(huà)質(zhì)表現(xiàn)均好于libx264的。不過(guò)這里需要指出的是,官方采用的編碼參數(shù)對(duì)x264是不利的,實(shí)際情況中,壓制組會(huì)使用更為復(fù)雜的控制參數(shù)來(lái)達(dá)到一個(gè)碼率-畫(huà)質(zhì)的平衡。不過(guò)對(duì)于簡(jiǎn)單的編碼,NVENC確實(shí)贏了。
拓展知識(shí):
原創(chuàng)文章,作者:九賢生活小編,如若轉(zhuǎn)載,請(qǐng)注明出處:http:///45788.html