私のカメラは.movファイルをムービーとして取ります。それらからすべてのメタデータを削除して、いつ、どこで撮影されたのか、私が持っているカメラの種類などを誤って共有することなく、YouTubeで自信を持って共有できるようにするにはどうすればよいですか? 、GUIプログラムの方が良いでしょう。
さて、私はコマンドラインの答えがあります:
注:これは、デフォルトでUbuntuに含まれるffmpeg
でのみ機能します。バージョンは0.8.1-4:0.8.1-0ubuntu1
に似ています。 itは、サードパーティのPPAからインストールした、または自分でコンパイルしたffmpegバイナリでは動作しません。あなたのマイレージは異なる場合があります。
Sudo apt-get install ffmpeg libimage-exiftool-Perl
test.mov
と呼びますそして実行:
ffmpeg -i test.mov -map_metadata -1 -vcodec copy -acodec copy test-nometadata.mov
その後、exiftool
を使用して、機能したことを確認できます。 exiftool test.mov
とexiftool test-nometadata.mov
は違いを示すはずです。
これは、大量のメタデータ(Pastebin'd)を含む古いNikon .movからのサンプル出力です。
(上記のffmpegの順序は必須であることに注意してください-入力ファイルと出力ファイルは最後に指定する必要があります)
注: ffmpegの最新バージョン(およびおそらくavconvですが、テストしていません)では、次のように使用できます。
ffmpeg -i input.mp4 -map 0 -map_metadata -1 -c copy output.mp4
-map_metadata -1
を使用すると、空の「ダミー」メタデータソースが作成されます。リポジトリ内のavconvのバージョン、または他の古いバージョンの場合、以下で説明する方法を使用します。
Avconv(または、それがあなたの武器であるならffmpegを使用して、構文は同じです):
これを行う最も簡単な方法は、グローバルメタデータを使用するのではなく、入力ストリームの1つを使用するように-map_metadata
を設定することです。これが機能するのは99%です。
avconv -i input.mp4 -map 0 -map_metadata 0:s:0 -c copy output.mp4
これにより、最初のデータストリーム(通常はビデオストリーム)からメタデータが取得され、それを使用してコンテナファイルのグローバルメタデータが置き換えられます。ほとんどの場合、データストリームには意味のあるメタデータが書き込まれていないため、これは機能します。ただし、場合によってはそうなることがあり、そのメタデータを完全に削除する必要があります。残念ながら、これを行う唯一の方法は、パイプと2つのavconvプロセスを使用することでした。
avconv -i input.mp4 -f wav - | avconv -i - -i input.mp4 -map 1 -map_metadata 0 -c copy output.mp4
これは、WAVファイルにメタデータを含めることができないという事実を利用します(フォーマットはメタデータタグが存在する前に作成されたため)。
これらのメソッドは両方とも、私がテストしたファイルのすべてのメタデータを空白にしました。exiftool
が報告したのはコーデック情報のみで、avprobeはメタデータを報告しませんでした。これにパイプを使用するのは非常に面倒であり、最初の方法は99%のケースで機能するため、この方法をお勧めします。
ボーナス:ディレクトリ内のすべてのMP4のブランクバージョンを作成し、その後、メタデータバージョンをブランクバージョンに置き換えます(警告-ほぼ元に戻せません):
for f in *.mp4; do avconv -i "$f" -map 0 -map_metadata 0:s:0 -c copy "out.$f"; mv "out.$f" "$f"; done