x264:在不增加位元率的情況下調整哪一個以獲得最佳直播品質?

x264:在不增加位元率的情況下調整哪一個以獲得最佳直播品質?

我正在嘗試以盡可能最低的比特率從 OBS 20.0.1 串流 FPS 射擊遊戲,同時保持盡可能最佳的品質(即更少的塊狀像素)。

我擔心更多的參考幀會增加我的比特率。那麼既然這是高動態串流媒體,我應該使用它-tune animation來增強去塊效應嗎?還是PSNR更有SSIM前途的候選人?

有沒有-tune比使用測試流程更好/其他的方法來測試哪個選項最好?

另外,還有其他 x264 選項可以讓我的直播受益,但 OBS 中未包含這些選項嗎?

我的OBS設定: OBS設定

我的硬體:

  • 中央處理器:英特爾 i7-4770k
  • 圖形處理器:英偉達 GTX780 Ti
  • 記憶體:12GB,1600MHz

答案1

我正在嘗試以盡可能最低的比特率從 OBS 20.0.1 串流 FPS 射擊遊戲,同時保持盡可能最佳的品質(即更少的塊狀像素)。

你可以這樣做,但是會花費大量的編碼時間。由於您正在進行直播,我假設您需要單一編碼通道,並且最好是快速的編碼通道,即最大化 CPU 資源。因此,您應該嘗試 CPU 速度預設 - 選擇您可以容忍的最高速度。

同時優化所有這些參數(速度、品質、位元率)是不可能的,這就是為什麼 x264(和其他編碼器)提供了一種選擇速度預設的方法(例如,在 x264 中從ultrafastveryslow)。這些預設分別啟用/停用最佳化壓縮品質或最佳化編碼時間的某些選項。

我擔心更多的參考幀會增加我的比特率

這通常是正確的,因為它們要大得多。

既然這是高動態串流媒體,我應該使用 -tune 動畫來增強去區塊效應嗎?或者 PSNR 或 SSIM 是更有前途的候選人嗎?

看看另一篇文章,其中調諧模式解釋

對於低延遲即時串流媒體的特定情況,透過一次編碼傳遞,使用film.這是為了保留(顆粒狀)細節。

您對低位元率阻塞的擔憂是可以理解的,但是animation預設對於直播沒有意義,因為它還會增加B 幀的數量,無論如何您都希望將其設置為0(或較低的數字)以允許快速傳輸編碼。B 型框架需要對過去和未來的幀進行編碼,這意味著編碼器/解碼器必須保留更大的緩衝區來儲存這些幀。 B 幀越多,品質越好,但會犧牲編碼時間。

psnr模式ssim也沒有用;它們僅在編碼器開發/最佳化期間使用,實際上可能會導致更差的主觀品質。

也許zerolatency更適合您的用例?

有沒有比使用測試流程更好的/其他方法來測試哪個 -tune-option 最好?

理論上,您可以對一些原始串流進行編碼,然後使用不同的設定對其進行編碼,並透過全參考視訊品質分析器運行它們,例如VQMT或者VMAF。這些將為您提供編碼的品質分數。但我想在你的情況下目視檢查結果也足夠了。

答案2

調諧設定並不是為了高/低質量,而是為了優化給定來源類型的外觀。

調整動畫適用於基於 cel 的(平面)動畫。不適合遊戲串流。

Tune film 適用於真人影片或電影,但足夠真實的 CGI(例如精細紋理)也可以從中受益。嘗試一下沒有問題。

沒有其他調音設定可能是合適的。最重要的是使用「更快」的預設(或更好),因為所有較低品質的預設都會顯著降低品質。為其提供足夠的比特率也很重要。請注意,x264 將使用相當多的 CPU,因此請做好準備。 NVENC 等硬體編碼器可能會在一定程度上幫助解決此問題,但視訊品質稍差。

除非您的平台強制執行低延遲,否則沒有必要進行低延遲調整,因為串流遊戲不需要這樣做(即,如果在已有的幾秒延遲基礎上再出現幾分之一秒的延遲,則觀眾不會受到影響) 。

答案3

tune參數對流品質沒有太大影響,因為指南中缺乏討論和/或提及其選項。animation可以與低比特率流一起使用以增加去塊效應,並且film可以與高比特率流一起使用以保持流盡可能忠實於來源。雖然我不確定解封或缺乏的效果如何。

PSNR用於SSIM碼率控制(CBR、ABR、VBR、CRF)之間的測試和比較。

相關內容