web-dev-qa-db-ja.com

ffmpegを使用してすべてのメタデータを削除する方法は?

入力ファイルがあります:infile.mp3このファイルにはメタデータ(アーティスト、ジャンルなど)が含まれています。出力wavファイルのすべてのメタデータを削除してみます。

はい!私はオプションを見つけました:

-map_metadata -1

しかし、出力は予想外です...

$ ffmpeg -i infile.mp3 -acodec pcm_s16le -ac 2 -ar 44100 -map_metadata -1 ./outfile.wav

OK!

$ ffprobe outfile.wav
Input #0, wav, from 'inp.wav':
  Metadata:
    encoder         : Lavf56.25.101
  Duration: 00:04:00.47, bitrate: 1411 kb/s
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, 2 channels, s16, 1411 kb/s

分かりますか?エンコーダメタデータが存在します!

そして、「subchunk1_id」と「fmt」値の後ろのwavヘッダーで、「subchunk2_id」と「data」値を期待します(期待される例をクリア):

$ strings outfile.wav | more
RIFFFB
WAVEfmt
data

しかし、そうではありません(LIST、INFOISFTなど)。

$ strings outfile.wav | more
RIFFFB
WAVEfmt 
LIST
INFOISFT
Lavf56.25.101
data

さて..出力ファイルのすべてのメタデータを本当に削除する方法は?

12
Deep
-fflags +bitexact -flags:v +bitexact -flags:a +bitexact
5
mzs

ffmpeg.org から:

It is also possible to delete metadata by using an empty value.
0
CamelTM

最初にそれを.wavファイルにコピーして(メタデータをサポートしていません)、次に.mp3にコピーして戻しますか?

```
ffmpeg -i in.mp3 tmp.wav
ffmpeg -i tmp.wav out.mp3
```
0
jimmy