web-dev-qa-db-ja.com

mp4のビデオファイルメタデータをバッチ編集するにはどうすればよいですか?

同じメタデータを含める必要のあるmp4ファイルがいくつかあります。アーティスト&アルバム。

メタデータを1つずつ行うのではなく、どのようにバッチ編集できますか?

5
t3rminal

先に進む前に、処理する動画のバックアップコピーを作成してください。以下のコマンドは、既存のファイルを置き換えます。

find /home/user/videos-to-process/ -type f -iname '*.mp4' -exec ffmpeg -i "{}" -codec copy -metadata artist="John Smith" -metadata album="Foo Bar" "{}.new.mp4" \; -exec mv "{}.new.mp4" "{}" \;

わかりやすいようにフォーマットされた同じコマンドを次に示します。

find /home/user/videos-to-process/ -type f -iname '*.mp4' \
  -exec ffmpeg \
    -i "{}" \
    -codec copy \
    -metadata artist="John Smith" \
    -metadata album="Foo Bar" \
    "{}.new.mp4" \; \
  -exec mv \
    "{}.new.mp4" "{}" \;

これは何をしますか?

  1. / home/user/videos-to-process内のすべての.mp4ファイルを再帰的に検索します(大文字と小文字を区別しない拡張子比較)。
  2. 目的のメタデータを使用して、既存のストリームをコピーして、新しいビデオファイルを作成します。
  3. 元のビデオファイルを新しいビデオファイルに置き換えます。

ステップ2 コピー既存のストリーム;再エンコードしていません(これは良いことです)。メタデータを変更するだけです。これを、それぞれ約1GBの6つのファイルがあるディレクトリで実行しました。合計処理時間は約30秒でした。

6
TooManyPets

この目的でユーティリティAtomicParsleyを使用できます。次のように、ターミナルウィンドウからこれをインストールします。

Sudo apt-get install atomicparsley

Mp4ファイルが単一のディレクトリにある場合は、その場所でターミナルウィンドウを開き、次のコマンドを実行します。

for i in *.mp4
do
AtomicParsley "$i" --album "Foo" --artist "Bar" --overWrite
done

(これには、文書化されていないが完全に機能する--overWriteタグが含まれます。)

明らかに、ファイルで使用したい実際の値を表すために、値FooおよびBarを変更する必要があります...

3
andrew.46