現在、最小限の変更で重複した動画を削除しようとしています。これは、わずかに異なるエンコーディング、低解像度、または単に変更されたメタデータです。これらのムービーは複雑なフォルダ構造に配置されているため、特定のフォルダに重複したムービーのみを削除できます。
だから私は見つかった重複したアイテムのリストを返すLinux用のツールを探しています。このツールはサーバー上で直接実行し、特定のサブフォルダのみを自動的に比較して時間を節約したいので、CLI(またはライブラリ)と一緒に使用する必要があります(サーバー全体が長すぎます)。
これまで私が見つけた唯一のことドッパーグルそして動画の重複を探す。残念ながら、彼らはすべてGUIプログラムです。
現在、私はjdupesを使用してすべてのバイトの完全なコピーを削除しています。ただし、これは変更されたメタデータや他の形式(例:webm、m4v、およびmp4)によって簡単にだまされます。
そのようなツールを知っている人はいますか?それとも私が自分で書かなければならない内容ですか?
答え1
単純な正確な冗長検索の場合は、fdupes
ツールを使用することをお勧めします。
独自のスクリプトを使用することもできますが、重複の説明は信頼できる回答を提供するほど厳密ではありません。今はパッケージffprobe
に含まれている製品のみを使用しますffmpeg
。このコマンドを見てください。
ffprobe -hide_banner -loglevel quiet -print_format json -sexagesimal -show_format -show_streams YOUR_FILE.mp4
オプションの説明:
-hide_banner
- バナーを隠す。ファイルの処理には必要ありません。-log_level quiet
- 他のメッセージも重要ではありません。-print_format json
- JSON出力形式を使用すると、JSONプロセッサを使用して目的のデータを簡単に抽出できます。-sexagesimal
- 時間出力形式HH:MM:SS.MICROSECONDS
-show_format
- ファイル形式に関する追加情報を提供します。-show_streams
- オーディオとビデオのストリーミングに関する情報を提供
これはいくつかの興味深い情報を提供します。まず、次のように format.duration などの一部のキーを抽出できますjq
。
ffprobe -hide_banner -loglevel quiet -print_format json -sexagesimal -show_format -show_streams YOUR_FILE.mp4 | jq '$.format.duration'
同じ映画は同じ持続時間でなければなりません。
これを「期間ごとに反復可能」ディレクトリにグループ化した後、特定の瞬間に特定のフレームのスクリーンショットを撮ることができます。
ffmpeg -i YOUR_FILE.mp4 -ss 00:00:01.000 -vframes 1 output.png
これにより、映画の最初の瞬間からすべての画像のスクリーンショットが保存されます(おそらく私はいくつかのタイムスタンプを好むでしょう)。
その後、最終的に画像のサイズを変更し、ImageMagickを使用して類似性を比較するという問題があります(https://imagemagick.org/script/compare.php) または他の同様のツール
頑張ってください!