簡單來說,一般 GPU 運算(跑 3D 視覺輔助、遊戲)的區塊為 Shader Engine,影片編解碼區域則為圖中的 Multimedia Engine,可以看到 Multimedia Engine 是個獨立的區塊,也就是說在晶片中它是有一塊區域是專門給硬體編解碼的,在做影片編碼時就只有它在工作,其他區域則是閒置的狀態(除非影片素材為 ProRes 或 RED Raw 這類的格式,這類格式會使用部分 Shader Engine 做為輔助 CPU 來解碼影片)。
同一系列最高階的 GPU 會包含 Shader Engine 與 Multimedia Engine 的全部區域,中階的 GPU 則是會屏蔽或移除部分 Shader Engine 的運算單元,只有到入門級別的型號才會把 Multimedia Engine 拿掉。這也能解釋為什麼 Apple 通常沒有搭載高階 GPU,因為對於自家的 Pro Apps 來說,除非把 Apple Motion 當成 Blackmagic Fusion 或 The Foundry Nuke 這種規模的軟體在用,不然絕大部分的時候 Shader Engine 是夠用的,Multimedia Engine 也和高階 GPU 是一樣的。
所以當然,插上 RX5700XT 這張神卡對於沒有太多特效的影片輸出來說並沒有太多差別,但是玩遊戲卻差非常多。這跟 Apple 沒什麼關係,換成 Windows 也會是一樣的現象,對於只是想要拍拍 Vlog 等以純粹剪輯為主的朋友想組一台剪輯用 PC 的朋友也可以參考一下,買神卡是不會幫你省到輸出時間的。
在建議硬體前,先從軟體講起。如果以一般剪輯為主,不加太多圖層的話,幾乎都是卡在輸出時的視訊編碼上,之前提到的 GPU 硬體編碼功能其實很多剪輯軟體是盡量不使用的,原因是輸出的畫質沒有達到該有的水準,因此多使用 CPU 來輸出影片。GPU 硬體編碼的主要是針對直播串流,這類應用通常畫質不是第一考量,但一般影片就不一樣了,觀看者有可能中間暫停,對畫面品質就會比較要求。那如果今天要輸出的影片不需要什麼太高的畫質,趕時間比較重要呢?在 4K 影片越來越普及的情況下,這個需求也隨之增加,製造 GPU 的廠商也慢慢開始改進編碼出來的畫質,因此 Adobe Premiere Pro 在今年也正式加入了對 NVIDIA 卡的硬體編碼支援了(不過只有 Windows 啦,畢竟 Apple 早就沒在用 NVIDIA 的卡了,而且要 GTX 1650 Super 以上的卡畫質才算可接受。這個東西其實好幾年前就一直存在 NVIDIA 自己的開發工具裡面了,但要自己用 Visual Studio 編譯原始碼後才能使用,一般人應該看不懂這句在說什麼XD),其他的像是 Davinci Resolve Studio (注意,有多一個 Studio) 跟 FCP X 也是有慢慢導入。
所以這裡我建議的方向,並不會以輸出時間為首要目標,而是在影片畫質有一定程度的前提下,能夠以比純 CPU 輸出影片更快為目的。
(吉米船長的比較表沒有把輸出的畫面品質做比較,像是把它們的 PSNR 列出來,我覺得有這個必要,好與壞差很多)
以 H.264 編碼品質來說,NVIDIA NVENC (Turing) > Intel QSV (3rd gen or above) > NVIDIA NVENC (Pascal or below) > AMD VCN/VCE
單純影篇剪輯的話,GPU 選擇 GTX 1650 Super 是個不錯的選擇,可以搭配 Adobe Premiere Pro 或 Davinci Resolve Studio,其中 Premiere Pro 需要比較多的 CPU 資源,剩下的預算可以升級 CPU 成比較多核心的;Davinci Resolve Studio 比較注重 GPU,則可以換成更高階的。如果常常需要輸出長片的話(例如輸出超過半小時的影片),建議選擇 Quadro RTX4000 或以上的 GPU。以上僅適用於 Windows 或 Linux。
Mac 的話只能退而求其次,選擇視訊輸出品質第二的 Intel GPU 輸出,理論上...2014年以後的Mac輸出時間與畫質都差不多(爽),以目前 Intel 跟 AMD 的研發進度看來只能期待 Apple 換成自家 SoC 後能端出牛肉了。
---
接下來是預算比較多且需要跟 Mac 工作流結合的情況下能做到的部分:輸出跟剪輯分開主機工作。
首先設定好一台 NAS,讓每台主機都能夠連上專案及素材所在的目錄。再來,有幾種不同的方法:
1. 在 Mac 上製作完成後,將專案丟給有 NVIDIA Turing GPU 的主機輸出,使用這種方式的話 FCP X 就比較可惜,Apple 已經把交給 Linux 主機輸出的功能在推出 X 版時整個拿掉了。能夠使用的有 Premiere Pro(輸出主機使用 Windows,要特別注意如果有裝額外的 plugin 需要同時在 Mac 跟 Windows 裝上對應的版本)與 Davinci Resolve Studio(可以使用 Windows 或 Linux,在 Linux 上速度會快一些但設定也稍微複雜一點)
2. 將專案依照場景分割成多個部分,並交由多台主機輸出,最後再透過 FFmpeg 或類似的工具程式將各段視訊連接起來(並沒有重新編碼喔)。這種方式應該沒有現成的工作流,也算是比較大型的製作才有的需求,需要 IT 或相關專業人員訂製與編寫工作流的工具程式或外掛模組(可能有商業的解決方案,但我懶得查了~),要注意的是每台主機使用的編碼器需要一致,不同的硬體或軟體編碼器輸出同一段影片是有差異的
06-29-2020
吉米丘
引用:
作者: cbs_ghost
所以這裡我建議的方向,並不會以輸出時間為首要目標,而是在影片畫質有一定程度的前提下,能夠以比純 CPU 輸出影片更快為目的。
(吉米船長的比較表沒有把輸出的畫面品質做比較,像是把它們的 PSNR 列出來,我覺得有這個必要,好與壞差很多)