最初に考慮すべきことは、イントラ フレームを配置する場所です。最適な圧縮を行うには、これを賢明に選択する必要があります。たとえば、シーンの変更を静的シーケンスの途中に優先します。最適な場所を見つけるには、生のビデオを分析する必要があります。これは、余分なパス (費用がかかります) で実行するか、エンコード時にその場で決定することができます。
したがって、ストリームをチャンクに分割するには、それを分析するために追加のパスを作成するか、任意に分割して圧縮効率をいくらか失う必要があります。
次に、この未加工のビデオをエンコードする方法を考える必要があります。どこかから圧縮プログラムにストリーミングされているか、すべてがディスク上で利用可能です。
ストリーミングの場合、ストリームのさまざまな部分にランダムにアクセスできないため、運が悪い. はい、バッファリングできますが、簡単に計算すると、これには大量のメモリが必要になるか、ディスクにバッファリングする必要があることがわかります。これは、次のポイントにつながります。
生ファイル全体をローカルに保存している場合は、一部を別のプロセスまたはスレッドに分割できます。あなたの問題がディスクアクセスになることを除いて!生の 1080p、24fps ビデオのデータ レートは、毎分約 4 GB であると考えてください。単一のプロセスでエンコードすると、生データを提供するためにディスクが大量に占有されます。それはプロセスの最も遅い部分でさえあるかもしれません (ハードドライブが非常に断片化されていない限り、おそらくそうではありません!)
ここで、4 つのプロセスが同じファイルにアクセスし、すべてが非常に高いレートで生データを取得しようとすることを考えてみましょう。このハード ドライブは、エンコーダーにデータを供給し続けることができません。弱いリンクは、低速のプロセッサではなく、低速のデータ アクセスです。
したがって、圧縮されていないビデオを保存するための本当に専門的なキットがない限り、並列エンコーディング用にさまざまなセクションを分割することはまだ実用的ではありません.