ffmpeg で安定化と圧縮をどのような順序で使用すればよいですか?

ffmpeg で安定化と圧縮をどのような順序で使用すればよいですか?

私は、Canon Vixia でサッカーの試合のビデオを撮影しています。このビデオは、h264 圧縮で 60fps HD で録画されます。カメラから 20GB のファイルが生成されますが、これを h265 を使用して再圧縮しています (ストレージを節約し、アップロード速度を上げるため)。ビットレートは 7000k と 60fps に制限されていますが、これは私のニーズを満たす十分な高品質です。私は AMD グラフィック カードで hevc_amf エンコーダーを使用しており、1 時間 20 分の HD ビデオを約 40 分 (2 倍) で再圧縮します。これはかなり満足のいく結果です。

最近、vidstab の使い方を習得しました。これは、揺れるビデオを非常にきれいにクリーンアップします。そこで、vidstab で安定化し、アーカイブする前に h265 に再圧縮したいと思います。ワークフローを最も効率的に順序付け、良好な結果を得る方法について、推奨事項を探しています。1) 最初に元の 20G ファイル (検出パスと変換パスの両方) で vidstab を実行する必要がありますか? または、2) 安定化を行う前に、ハードウェア アクセラレーション hevc_amf エンコーダーを使用して再圧縮する必要がありますか?

  1. 最初のオプションの場合、フォローアップの質問です。次のように vidstabtransform を実行します。
ffmpeg.exe -i input.mp4 -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 outputstabilized.mp4

これは ffmpeg.org のドキュメントによるとのことです。ビットレートが元の 30Mbps から約 10Mbps に変更されるようです。なぜでしょうか? それを制御して元のビットレートを維持することはできますか? そうすべきですか? (また、アンシャープ マスクは必要ですか? これは安定化に伴う固有のズームがあるためですか?)。

このアプローチの欠点は、h265でより良い圧縮が得られるということのようです。安定化によりピクセルの動きが少なくなりますが、大きな違いはないかもしれません。

  1. 2 番目のオプションの場合でも、安定化出力のビットレートを制御できますか?

他にお勧めのワークフローがあれば、ぜひ教えてください。(複雑なフィルターマップの使用を検討したこともありますが、複雑そうなので、理解する時間も割いていません。)

前もって感謝します!

答え1

vidstabdetect元のファイルに対してフィルターを実行します。

vidstabtransform元のファイルにもフィルターを実行しますが、最終出力を生成するには HEVC エンコーダーを使用します。フィルターはエンコーダーの前に実行されるため、変換によって元の入力からのフレームがエンコーダーに送信される前に安定化されます。

関連情報