archlinux下的obs 4k推流使用報(bào)告
背景
一直以來(lái),我都以為intel家的核顯對(duì)付4K輸出、4K錄制和推流都綽綽有余,畢竟B站的各種視頻和商品的推廣圖片里都寫(xiě)著嘛,比如下面這個(gè)nuc12的宣傳圖:

盡管這是移動(dòng)端的cpu宣傳圖,考慮到桌面端的核顯是閹割版本的,但支持個(gè)雙屏4K總不成問(wèn)題吧?
正好我計(jì)劃利用空余時(shí)間直播碼代碼,就決定用Intel核顯來(lái)推流了!
配置
我用來(lái)碼代碼+學(xué)習(xí)的機(jī)器是一臺(tái)nuc12 extreme,它搭載了12代i9-12900,我給它配備了兩個(gè)32G的DDR4筆記本內(nèi)存,我閑著無(wú)聊,還裝上了一張RTX3080-10G的獨(dú)立顯卡。
僅使用獨(dú)顯
在裝上獨(dú)立顯卡并安裝好nvidia驅(qū)動(dòng)后,系統(tǒng)其實(shí)是默認(rèn)使用獨(dú)立顯卡輸出的,如果只使用Intel核顯,需要修改以下兩個(gè)地方
1. 添加 /etc/X11/xorg.conf.d/20-intel.conf文件,包含以下內(nèi)容
Section "OutputClass"? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? Identifier "intel"? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? MatchDriver "i915"? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? Driver "modesetting"? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? Option "PrimaryGPU" "yes"? ?? ? ? ? ? ? ? ? ?
EndSection??
其中比較重要的是?Option "PrimaryGPU" "yes" 這個(gè)配置,顧名思義,意思是這張卡作為主要的輸出GPU。
2. 注釋掉/usr/share/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf。nvidia驅(qū)動(dòng)每次安裝后,都會(huì)重新創(chuàng)建并覆蓋/usr/share/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf 文件,所以如果不注釋掉這個(gè)文件的話,那么重啟后,xorg將運(yùn)行在N卡上,其他應(yīng)用運(yùn)行在intel核顯卡上,是不是很奇怪?
特立獨(dú)行的OBS
nvidia提供了一個(gè)雙顯卡切換的命令 prime-run,使用prime-run命令,可以指定進(jìn)程在獨(dú)立顯卡上運(yùn)行,但是obs是個(gè)例外,使用prime-run obs命令啟動(dòng)的obs,仍然會(huì)運(yùn)行在核顯上,僅在不注釋?/usr/share/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf 這個(gè)文件的時(shí)候才能正常工作。
拉胯的集成顯卡
obs運(yùn)行在核顯上的時(shí)候,使用屏幕捕獲,使用intel_gpu_top命令能看到負(fù)載特別高

這時(shí)候整個(gè)電腦響應(yīng)會(huì)變得卡頓,chrome也會(huì)卡死,但這時(shí)候系統(tǒng)的負(fù)載特別低。就算你的cpu是13900也不能幸免,所以為了良好的使用體驗(yàn),obs不能運(yùn)行在集顯上。
我花費(fèi)了大量的時(shí)間查了原因,疑似是xorg實(shí)現(xiàn)機(jī)制的原因,導(dǎo)致屏幕捕獲效率低資源占用大。我順便測(cè)試了其他的錄屏工具,資源占用都比obs稍好。
我的最佳實(shí)踐
xorg運(yùn)行在獨(dú)顯上,但使用核顯來(lái)輸出
obs使用prime-run運(yùn)行在獨(dú)顯上,其他應(yīng)用均使用核顯