流媒體技術學習筆記之(七)進階教程OBS參數與清晰度流暢度的關系


 

源碼地址:https://github.com/Tinywan/PHP_Experience


 

 

  很多主播問過OBS的參數到底什么影響畫質,到底什么影響流暢度,那么本篇教程盡量用通俗的語言解釋下一些重要參數到底是干什么的,自己一定要理解為主,每個主播的電腦、所在的平台、當天的網絡狀態(注意網絡就和馬路一樣,每天的情況都是不一樣的)、平台的當天的狀態、不同的游戲不一樣,合適的參數都不一樣。不要羡慕大主播高清流暢的畫質,他們也是自己耐心(或者背后有技術團隊)調整出來的。

碼率

碼率在OBS中叫最大比特率

 

為什么叫最大比特率不叫比特率?

  比如你現在采集了5000碼率的東西,但是畫面變化不大,上一個畫面和現在的畫面可能僅僅改變了500碼率的部分,那么OBS就會優化,只傳輸500碼率就行了(測試【1】幻燈片),觀眾看起來卻得到了5000碼率的畫面,可是觀眾只用了很少的下載速度,你也用了很少的上傳速度。所以經常有主播問,為什么我設置了很高的碼率,右下角的數字在變,還很小?是不是出錯了?看到這里應該明白了,沒有出錯,反而是正確的,那里顯示的是優化后實際傳輸的數字。

    但是如果畫面變化的很劇烈(比如效果特別強的電影,測試【2】所示),比如守望先鋒跑動起來,那么就無法這樣優化了,就必須用足夠的碼率來上傳,那么問題來了,每個主播的上傳帶寬是有限的,平台能接收的帶寬也是有限的(並不是你上傳速度快就能肆無忌憚的提高碼率,平台還有接收能力,speedtest那里測試的只是你的能力,你還要考慮平台的能力)。這就要限制上傳速度了,否則傳給平台的速度不夠(注意我沒說你上傳速度不夠)就會丟幀。丟幀就是obs右下角的這樣的

下面我們來做一個測試

例如:我們設置最大比特率為:8000kbps(視頻采集碼率為8000)

【1】播放一個幻燈片測試最大比特率為:390kb/s~980kb/s之間波頓:

 【2】播放一個3D高清電影,測試最大比特率為:2440kb/s~6880kb/s之間波頓:

 

  一般偶然有幾個丟幀沒事,一直在增加必須改進,否則觀眾會卡。為了解決這個問題,obs中就需要設置最大比特率,就是俗稱的碼率。當你采集的畫面超過這個數值時,obs就會丟棄多余的和進行優化,保持這個速度上傳。如果丟的過多優化的過多,觀眾看起來就會形成馬賽克。 這里並不是丟幀,而是為了保持碼率而進行的優化。

很多主播問,這個碼率到底填多少?

  首先,這個最大值不能超過你的上傳最大能力,就是在一般測速網站或者用專業測試工具測試出來的速度,比如 5M,那么就是5000,2M就是2000,但是你還得留點帶寬給自己和軟件用吧,5000能有個4500就不錯了,2000能有1500就不錯了。

   其次,你得考慮觀眾的網速,通常而言,手機用戶(別以為都是wifi,我以前也這樣認為,后來看了調查才知道)200k左右的下載速度就差不多了,200k乘以8就是碼率,大概是1500左右的碼率,這也是大多數平台,默認推薦的碼率值。

  最后,如果你不是直播,是錄制視頻,機器能帶動的情況下,可以寫很大,比如8000,1000。切記,直播不行,觀眾會卡的。

 

 

CBR

很多人會問這個CBR勾不勾?

  80%的主播別勾!一旦勾上,OBS就會放棄幫你優化傳輸了,就是說每秒都要傳輸足夠多的碼率來直播(其實根本沒有必要,你會損失很多網速不好的觀眾或者損失平台帶寬不足的省份的觀眾,觀眾會喊卡)那么什么情況要勾?給幾百上千個主播調試后發現,只有碼率不高,比如3500以下,平台帶寬充足,而怎么設置也設置(怎么設置下面都在說)不出清晰的效果(尤其是跑動的動態畫面會有馬賽克),那么就勾上有奇效。

 

品質

 

  在去掉CBR的勾后(勾上沒這個品質的概念),直播軟件需要計算,如何優化這個畫面,以確保更少的傳輸內容卻保證高質量的畫面。而這個是需要計算量的,品質就決定了這個,品質越高,計算量越大(越耗CPU)。那如何使用合適的品質哩?

  最靠譜的方法是,你打開游戲開始運行,然后把品質調到10,游戲盡量用動態的畫面而不是靜止不動(為了方便觀察,可以用錄制視頻的方法比較)。再把品質調到8。看看這兩個視頻肉眼看有區別嗎,如果沒有區別,你說哩?自然是機器好的保持10,機器不好的保持8(反正肉眼看不出差別)。同樣原理,測試品質7,6,5,4等等。有的教程會給大家推薦一些類型游戲采用什么品質,出發點是好的,但是太籠統,盡量不要照本宣科,多動手,找到最適合自己的參數。

 

分辨率

  然后,很重要的來了,碼率是要看分辨率的,分辨率越高,消耗的碼率就越大注意這里的分辨率不是游戲也不是你電腦桌面的分辨率,是obs輸出的視頻分辨率。通常在這里

  很多主播用默認的高分辨率顯示器直播,有3000以上的分辨率,要知道直播不是看電影,這么高你得消耗多少碼率,想想就知道要馬賽克),通常而言(注意啊!這里不是叫你一定啊,所有的數值你一定要自己對比測試,如果肉眼看起來一樣,盡可能低的參數能適合更多的觀眾),通過壓縮分辨率壓縮到1280X720比較合適。

 

壓縮分辨率

  而且壓縮分辨率還有個好處,就是節省CPU。有人會問,分辨率壓縮了不是還要耗CPU嗎,怎么反而會節省。自己動手實驗先看結論 看看壓縮后的cpu使用和壓縮前誰高(看本教程,盡量要邊動手實驗邊看)然后告訴你大概的原因,這是因為,OBS大部分CPU消耗在制作視頻上,而不是采集上,而壓縮視頻是把圖片壓縮成視頻,越小的圖片制作視頻負擔越小。所以先壓縮,再制作視頻,最后的cpu反而降低了。當然,如果你能直接降低分辨率,那是最好的,節省了壓縮的部分cpu,但是很多主播不習慣改變分辨率游戲,所以只好壓縮分辨率了。

有人問,壓縮分辨率到底是提升畫質還是降低畫質?

  正確的回答應該是 : 碼率足夠時,會降低畫質,碼率不夠時,反而會提高畫質。(因為降低了碼率使用,不會被強制馬賽克)使用壓縮分辨率時,經常有主播問,濾鏡用最快還是最好。

  最快,使用的CPU最少,但是畫質最差(其實已經很好了,只是相比其他兩個差點)。

  最好,使用的CPU最多,但是畫質最好。那么,就要看你使用壓縮分辨率的初衷了,如果機器很好,是為了減少馬賽克,那么用最好如果你是機器帶不動了,obs開始報警了(左下角報警cpu使用過高)那么肯定用最快咯

此外,如果不用壓縮分辨率,是比最好還要好的,但是分辨率比較高盡量壓縮下,你要考慮觀眾的流暢。

  做直播,首先要讓觀眾看的流暢,卡了誰看你,然后才是清晰,馬賽克很難受。但是如果馬賽克和卡頓這兩個比較,當然選流暢,情願馬賽克。本教程的目的是盡可能教會你即流暢又不馬賽克,在機器配置和網絡質量都達標是可以做到的。

  那么碼率到底用多少?這個問題最后再說,因為這里和其他參數息息相關。

 

FPS

好了,繼續下個參數FPS。這里的FPS是視頻FPS,

  不是游戲的FPS。不同的CPU和顯卡、游戲,合適的值都不一樣,通常情況下,一般25和30就足夠了(比如LOL)。我們專門測試過,甚至少機器,20,30,60直播守望這種動作游戲都沒區別。

當然,我們主要考慮大多數情況,一般的游戲25,30就行了,而大型動作游戲比如守望,主機游戲,大概有50%主播需要60,才能行雲流水。而剩下40%左右,依舊30就行了。這里說明你一定要自己動手實驗!如果你用30的肉眼感覺和60一樣,那么自然30了,節省自己的CPU節省碼率節省觀眾網速。

  但是,大概有5%的主播,系統和驅動有問題,這里甚至會影響到游戲FPS,那這里被迫就要提高到60。那么是不是我干脆就寫60好了,不行,這里也影響碼率,碼率是表示一秒鍾視頻的大小如果你一秒鍾有30張圖片,那么大小自然比一秒鍾60張圖片小,這里的圖片個數就是FPS。如果碼率不夠,就變成馬賽克了,上面部分詳細說了,你理解了就會明白。到底能不能用60?

★★★實戰經驗:

  問:畫面卡頓的原因是什么情況?

  答:推流的Fps和播放的Fps不一樣的,列如:推流fps=30 轉碼(拉流)fps=25 不一樣的話就會出現畫面卡頓現象。

 

 

來源

  下面介紹下用什么來源直播。首先盡可能別用顯示器獲取,不是配置的問題,而是原理的問題,這種方式極其耗資源(很多i7也帶不動,視頻fps會被嚴重拖累),(少部分機器經過試驗不耗,可以用,自己要動手)。其次能用游戲源盡量用游戲源,騰訊和部分單機游戲要勾上反作弊兼容,暴雪游戲一般不需要。最后,如果不支持游戲源,那么就用窗口獲取。

簡單來言,騰訊大部分游戲和暴雪所有游戲,都用游戲源即可。注意有些游戲比如LOL是有大廳和游戲本身兩個程序的,所以需要添加兩個。騰訊游戲還要勾上反作弊兼容。而單機游戲,steam上的,也大多數是游戲源。少部分游戲特別老或者反作弊系統干擾游戲源或者特別新是DirectX12的,那么就只有把游戲改成無邊框窗口化,再用窗口獲取,如果游戲里面沒有這個功能,那么可能只有用顯示器獲取了。有的主播會問,那我不用顯示器獲取,游戲結束后怎么辦,是黑的啊。如果你的機器能帶動顯示器獲取(游戲不卡),那么就加上吧(注意要放在最下面,因為上面覆蓋下面,右鍵順序可以調整)。如果帶不動,可以用個圖片源,放個好看的桌面背景,又好看又節省資源。

動手能力更強的,可以使用OBS自帶的自動場景切換插件,這里就不展開說了,中文的,看看界面和百度下教程有解釋的。還有的主播一局游戲結束后第二局發現無法獲得,黑了,這是部分機器上游戲源的一個bug,你只要重新添加即可,如果嫌麻煩,游戲源還有個快捷鍵設置,按下等於重加了。部分游戲不支持游戲源需要用窗口獲取,窗口獲取里面的參數會問如何調整?其實方法很簡單,大膽試驗!就那幾個參數,什么內部整個,獲得圖層,什么兼容模式,你點下再預覽下,看看游戲是否獲得了,有畫面就ok了,多試驗幾次就知道正確的參數了。

 

編碼器

再介紹下三個編碼器。

 

通常情況下,用第一個,這個是使用CPU來編碼的,優點是兼容性高,畫質好,缺點是占用CPU最高。

如果機器帶不動了,那么可以用第二個和第三個。

如果不能選擇是灰色的,說明你的機器不支持或者沒有打開(檢查驅動)。

后面兩個調用硬件顯卡來編碼,畫質會降低,但是不占用CPU了,游戲卡頓會很大緩解。但是尤其是第三個,畫質會差不少(一定要自己對比,別懶,不就試驗2次看看就知道了嗎)

使用第三個如果直播黑屏了勿驚慌,點到高級,修改預設,挨個試驗,總有不黑的(一般比如nvdefault)

 

高級

下面介紹x264的高級。這里每個參數不詳細說了,很多和畫質關系不大。

你所要注意的就是x264 CPU預設,越往上,CPU使用的越小,但是畫質越差,越往下,就是越slow,CPU使用的越高,但是畫質越好。通常用veryfast,對自己cpu有信心的可以調高(前方高能預警,調這個后一定要開你直播的游戲立刻測試下,別太有信心了)以上參數通過你反復的對比測試(啥叫對比測試,就是你改下參數,去看下直播間的效果)找到合適的后,我們最后重點來說下碼率的問題。

 

碼率的選擇

各大平台默認1500是有道理的,平台不會忽悠自己的主播,所以你先以1500碼率為初始點。100,200的上加,判斷依據包括

  1. 是否OBS提示丟幀了,一旦提示丟幀說明碼率高了,就別加了,要適當降低
  2. 觀眾是否喊卡了,喊卡了說明平台無法給你搭配如此高的帶寬了(注意要大部分觀眾,偶然的不算,你可以喊網絡好的朋友幫你)

 還要注意一點,由於OBS會優化傳輸,所以在測試時,你可以勾上CBR,不要他優化,因為你要測試出你的碼率能力嘛,但是直播時,80%情況要去掉cbr,切記。

最后你發現比如加到2800,畫質好,不丟幀,觀眾反饋不錯,而加到2900就開始丟了,那么你這次直播的最佳碼率就是2800了。下次不一定是這個數值,但是反復多直播一些日子,你也就大概知道一般多少了。預覽是不會丟幀的,因為預覽是不傳輸數據的,僅僅讓你看畫面,必須開始串流才行。

 

最后再介紹一個方法,在出現問題時,如何判斷是你的問題還是平台的問題。那就是不直播,點開始錄制!!!!!!!!!!!


 

 

 

錄制完一段時間后去看這個視頻。錄像文件在這里:

如果錄制的視頻就有同樣問題,那么就是你的本機參數沒有調整好。如果錄制的ok,平台直播出來有問題,比如顏色失真了,馬賽克巨大,那么就是其他原因。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM