ffmpeg + MPDecimate を使用して、正確に重複したフレームを削除します(つまり、ロスレス)。

ffmpeg + MPDecimate を使用して、正確に重複したフレームを削除します(つまり、ロスレス)。

文書によると、mpデシメート「フレームレートを下げるために、前のフレームと大きく変わらないフレームをドロップします。」

削除したいのはちょうど動画からフレームを複製します。動画には重複したフレームがたくさんあることはわかっています似ているただし、完全に重複しているものだけを削除したいのです。

ffmpeg と mpdecimate を使用してこれを実行する方法 (または他のツール) についてアドバイスはありますか?

答え1

hi と lo の値は 8x8 ピクセル ブロック用であり、実際のピクセル値の差を表します。したがって、しきい値 64 は、各ピクセルの差の 1 単位、またはブロック全体に異なる形で広がる同じ値に相当します。

8x8 ブロックの差が hi しきい値を超えず、frac ブロック (1 は画像全体を意味する) の差が lo しきい値を超えない場合、フレームはドロップ候補となります。

hi のデフォルト値は 64 * 12、lo のデフォルト値は 64 * 5、frac のデフォルト値は 0.33 です。

ffmpeg -i input.mkv -vf mpdecimate=hi=1:lo=1:frac=1:max=0 output.mkv

すべき画像全体のピクセル値の差が前の画像と 1 ピクセル以内の場合にのみ、画像をドロップします。

静止画像を 5 秒の h264 ビデオにレンダリングしたテストでは、実際には 125 フレームのうち 3 フレームがドロップされました。これは圧縮アーティファクトが原因である可能性があります。

最高値と最低値を200に調整する場合

ffmpeg -i input.mkv -vf mpdecimate=hi=200:lo=200:frac=1:max=0 output.mkv

21 フレームが保持されます。

正確な複製の定義に応じてパラメータを調整する必要が生じる場合があります。

関連情報