優化實況(二) OBS需要的流量 streaming bandwidth requirement

最後更新 2020/3/05
以OBS Studio (以下只稱OBS)為標準編寫,其他實況軟體(Xsplit ...etc)設定可能不同
平台可能會有最大上傳限制,超過就會被斷線

Youtube 似乎全部都會transcode,被再壓縮過最高畫質會降低(比實況主送出的低),延遲應該會增加,實際影響有多大,我沒興趣實測不清楚
實況主的上傳需求沒有改變,觀眾的流量會減少(youtube轉過的影片應該會變小)

Twitch上的latency設定 (不影響到OBS),新版改成由觀眾自己選擇
Normal latency: 預設
Low latency: 減低延遲,強化即時互動,副作用觀眾的網路用量增加,畫質變差 (Twitch的說法,詳細機制我沒研究)
沒看到詳細的說明,實況主的上傳需求應該沒有改變

更低延遲可用支援FTL協定的平台 (因為FTL是M$的技術,除了自家Mixer應該都不給用)
上傳量會比傳統使用rtmp的多

本質上實況主和觀眾的畫面有延遲是無可避免的,通常實況主上傳設越大延遲越高
Q: 延遲是怎麼來的?
A:
實況主送出: 壓縮影片和網路傳送的延遲
觀眾接收: 網路傳送,影片需要累積到足量才能開始播放 (需要足夠資訊才能解碼,實況主上傳越高延遲越高)
兩個加起來才是實際的延遲

Twitch官方上傳建議 (品質接近本機需要的最大上傳量,或邊際效應太低不值得更高)
https://stream.twitch.tv/encoding/
實際上依配備和想給觀眾的體驗決定,不照官方建議還是可以實況(某些平台可能會限制)

懶人設定 720p FPS 30 cbr 上傳3000,多數遊戲都有不錯的表現,動態遊戲需要 60
要測試Twitch上傳可以在streamkey後加上 ?bandwidthtest=true
可以測試上傳穩定性,系統負載,如果按了實況卻看不到開台可能是忘了拿掉測試模式 

實際需要的上傳量根據使用的encoder改變 (好的encoder可用較低上傳達到同畫質)
encoder比較可看 優化實況(一)

OBS上傳量的單位是Kbps,設1500的情況下 (簡單計算不考慮protocol overhead)
1500Kbps = 1.5 Mbps,2018/01/07 hinet最低速上傳為3M,用掉一半

解析度720(1280X720), 1080(1920×1080) 要達到同樣畫質上傳量差很多
未壓縮前的畫面大小 (1920/1280) X (1080/720) = 2.25倍資料量
壓縮後的倍數視資料而定,可以肯定 1080下用量會比720高

OBS的fps設定也會影響未壓縮前的資料量,fps 60和30 就是2倍資料量(raw data),壓縮後應該不會是兩倍 (除非原始資料每個frame變化很大)
目前好像沒有支援fps超過60的平台,不要設超過60,除非你在錄影
fps決定流暢度,人眼fps 25~30 就會感覺是連續的 (建議最低30,除非電腦不夠力)
遊戲內fps一般需要60或更高(看螢幕支援,fps高過螢幕能力只是浪費電,無法顯示)
請考量自己網路和觀眾網路決定實況設定

2017/6/30 1080的實況,熱門時段我看幾乎都會lag (使用hinet 20/5M網路)
在Twitch新增台灣區的server後可能有改善 (我習慣只看720p,才能邊看實況邊做別的事)
如果你的台可以調整畫質,對觀眾沒有影響就隨你高興
除了高階手機好像也只到720? 也考慮其他人的流量限制 (手機或是宿舍限制)
小台剛開始建議用720,讓多數人能順利觀看,等人數多或可調畫質後再調到1080

根據OBS Discord內的說法,1080p fps60,在non-partner下有限制無法有好的表現


畫面會突然變比較糊,就是你的上傳量無法表示畫面
要調高buffer (讓程式做更好的動態畫面運算)或上傳量
或是降低畫面品質 (降低解析度和fps),可以考慮不要用1080改用720,fps 60改成30
實際數值依遊戲和實況設定改變 (動態遊戲需要較多)
較動態的遊戲720下,至少約需要3000上傳才能清晰不糊
比較靜態的可以用720 fps30, 1500上傳


VBR/CBR的選擇
一般情況下靜態畫面多的遊戲推薦用vbr省流量,動態的遊戲用cbr
不知道該算靜態還動態? 除非缺頻寬,一般是用cbr


軟體壓縮x264的情況
vbr 波動範圍較大,最大時上傳/cpu會比cbr大,最小時也是上傳和cpu都比cbr小
靜態多的遊戲總資源(上傳+cpu)用量應該會比較少
cbr 比較穩定,最大上傳量會比vbr最大小,cpu用量比較穩定 (最大cpu用量比vbr小) 
如果cpu不夠用的也選這個比較好

twitch表示CBR資料傳送到server會比較穩定 (internet上舊的網路設備無法有效處理,現在還有影響嗎?)
CBR影像資料不夠多時會塞垃圾補到一樣大 (靜態畫面多時很浪費)


硬體壓縮由於使用的樣本不夠多,各硬體也不相同,僅供參考以自行實測為準
Nvidia GTX 750(GM107, Maxwell Gen1) vbr用量只會增加不太減少,感覺用cbr比較好?
畫質感覺也不如cbr


聲音(audio)的部分,流量相較Video小多了
一般最低是設定128 bitrate+ 44.1Khz
bitrate設高一點聲音會比較好 (沒有研究無法提供更詳細說明及建議數字,太高也是浪費)
Khz設超過原始資料沒有用,只是浪費




Twitch server可以用Taipei了
http://craftwarblog.blogspot.com/2017/10/twitch.html

測試twitch server工具 TwitchTest: Twitch Bandwidth Tester
實測網路上傳Twitch server能跑到多少
https://r1ch.net/projects/twitchtest ( https://github.com/notr1ch/TwitchTest )

Next 優化實況(三) 減少系統使用資源,讓遊戲使用更多

留言

這個網誌中的熱門文章

OBS 抓不到畫面, 視窗, 遊戲擷取, 黑或白畫面, 當掉 ,卡住, black/white screen, window game capture, crash, freeze

優化實況(一) OBS設定 streaming settings

OBS plugin obs-text 顯示播放中音樂, display playing music