FFmpegを使用してすべての形式からメタデータを取り除く


43

FFmpegを使用してすべての形式からすべてのメタデータを削除するにはどうすればよいですか?

man ffmpegごとに各フォーマットに特別なメタデータを設定することができます。すべてのメタデータをクリアし、ffmpegで利用可能なすべてのメタデータからメディアを削除するオプションまたは方法はありますか?

   -metadata key=value
       Set a metadata key/value pair.

       For example, for setting the title in the output file:

               ffmpeg -i in.avi -metadata title="my title" out.flv

回答:


63

@izxによってコマンドラインを少し変更すると、次のようになります。

ffmpeg -i in.mov -map_metadata -1 -c:v copy -c:a copy out.mov

結果は(再び、でチェックexiftool)、81行から52行に削減されたメタデータレコードです。すべてのメタデータを単純に削除することはできませんが、いくつかのものが残ることに注意してください。しかし、作成日を変更することはできませんでした。これは、Ubuntuバージョンで動作するように思われるため、奇妙です。

FFmpegメーリングリストに投稿し、更新やコメントがあったかどうかを尋ねました。彼らが言っていることを見てみましょう。


2
mov又はmp4ファイル作成日は、(1904年からの秒で表される)ムービーヘッダトラックヘッダ内の整数フィールドです。0または他の固定値に設定できますが、それを削除して有効なファイルmovまたはmp4ファイルを保持する方法はありません。
mark4o

完全に削除することはできませんが、何らかの理由で変更することはできませんでした。
slhck

3
現在のffmpegを使用して、作成時間を-metadata creation_time=2012-12-17T21:30:00(UTC)で変更できます。
mark4o

1
これを変更してタイトルも削除するにはどうすればよいですか?現在、タイトルは自動的に生成されたものに設定されます。最後に完全なファイル名をタイトルとして見たいです。
ルーキー14年

2
@Rookie次に、を設定する必要があります-metadata title="Some Value"。または、ファイルのための、MP4ファイルのためにこのような何か:ffmpeg -i "$file" -map_metadata -1 -c copy -metadata title="$file" "${file%%*.mp4}-new.mp4
slhck

9

メタデータ、チャプターを削除して、作成時間とタイトルを変更する私のソリューション。このように、メタコンテンツは元のファイルとは異なる必要があります。

ffmpeg -y -i "test.mkv" -c copy -map_metadata -1 -metadata title="My Title" -metadata creation_time=2016-09-20T21:30:00 -map_chapters -1 "test.mkv"

1
その変種は私にとって有用でした、ありがとう。ffmpegマニュアルに上記のような例をもっと示してほしい。stackoverflow、スーパーユーザーなど...多くの有用な情報が含まれているため、すべて非常に有用になります。
シェビー

8

注:私はそれ以来更新しましたffmpeg(以前avconvはUbuntuリポジトリの古いバージョンがありました)。

これで、@ slhck -map_metadata -1 は完全に機能します。

入力が少なく最新の@slhckのソリューションをお勧めします。古いバージョンを使用している人のためにここに残しておきます。


これを行う最も簡単な方法は、設定することです -map_metadataは、グローバルメタデータを使用するのではなく、入力ストリームの1つを使用するすることです。これが機能するはずの時間の99%。注:Ubuntu 12.04リポジトリにあるavconvを使用しています。ffmpegの構文は常に私の経験にあるため、これはおそらく ffmpegとドロップイン互換です。

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%のケースで機能するため、この方法をお勧めします。


1
WAVEファイルは、他のRIFFベースのファイル(AVIなど)と同様に、「INFO」リストチャンクを使用してメタデータタグを実際に含めることができます。あまり頻繁には使用されません。
ブレロンチン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.