web-dev-qa-db-ja.com

x264:ビットレートを上げずに最高のライブストリーミング品質を実現するための調整はどれですか?

私は、可能な限り最高の品質を維持しながら(つまり、ブロックの少ないピクセル)、可能な限り低いビットレートでOBS20.0.1からFPSシューティングゲームをストリーミングしようとしています。

参照フレームが増えるとビットレートが上がるのではないかと心配しています。これは動きの激しいストリーミングなので、-tune animationを使用して非ブロック化を強化する必要がありますか?それとも、PSNRまたはSSIMがより有望な候補になるでしょうか?

テストストリームで試すよりも、どの-tune-オプションが最適かをテストするためのより良い/他の方法はありますか?

また、私のストリームが恩恵を受けるが、OBSに含まれていない他のx264オプションはありますか?

私のOBSセットアップ: OBS Setup

私のハードウェア:

  • CPU:Intel i7-4770k
  • GPU:Nvidia GTX780 Ti
  • RAM:12GB、1600MHz
1
Trr1ppy

私は、可能な限り最高の品質を維持しながら(つまり、ブロックの少ないピクセル)、可能な限り低いビットレートでOBS20.0.1からFPSシューティングゲームをストリーミングしようとしています。

これは可能ですが、エンコードに時間がかかります。ライブストリーミングを行っているので、単一のエンコーディングパスが必要であり、できれば高速なパス、つまりCPUリソースを最大限に活用するパスが必要だと思います。したがって、CPU速度のプリセットを試してみる必要があります。許容できる最高速度を選択してください。

これらすべてのパラメーター(速度、品質、ビットレート)を同時に最適化することは不可能です。そのため、x264(およびその他のエンコーダー)は、速度プリセット(たとえば、ultrafastからveryslow in x264)。これらのプリセットは、圧縮品質を最適化する、またはエンコード時間を最小化する特定のオプションをそれぞれ有効/無効にします。

参照フレームが増えるとビットレートが上がるのではないかと心配しています

これらははるかに大きいので、それは一般的に真実です。

これはハイモーションストリーミングなので、非ブロック化を強化するために-tuneアニメーションを使用する必要がありますか?それとも、PSNRまたはSSIMがより有望な候補になるでしょうか?

チューニングモードが説明されています であるこの他の投稿を見てください。

1回のエンコードパスで低遅延のライブストリーミングを行う特定のケースでは、filmを使用しても意味がありません。これは、(粒子の粗い)詳細を保持するためのものです。

低ビットレートでのブロック性についての心配は理解できますが、animationプリセットはライブストリーミングには意味がありません。Bフレームの数も増えるため、とにかく0(または低い数)高速エンコーディングを可能にします。 B-frames 過去と未来のフレームをエンコードする必要があります。つまり、エンコーダー/デコーダーはこれらのフレームを格納するためにより大きなバッファーを保持する必要があります。 Bフレームが多いほど、エンコード時間が犠牲になり、品質が向上します。

psnrモードとssimモードも役に立ちません。これらはエンコーダの開発/最適化中にのみ使用され、実際には主観的な品質が低下する可能性があります。

おそらくzerolatencyはあなたのユースケースにより適していますか?

テストストリームで試すよりも、どの-tune-optionが最適かをテストするためのより良い/他の方法はありますか?

理論的には、いくつかの元のストリームをエンコードしてから、さまざまな設定でエンコードし、 [〜#〜] vqmt [〜#〜] またはのようなフルリファレンスビデオ品質アナライザーで実行できます。 [〜#〜] vmaf [〜#〜] 。これらは、エンコードの品質スコアを提供します。しかし、あなたの場合、結果を視覚的に検査することでも十分だと思います。

1
slhck