简体   繁体   English

如何使用 ffmpeg 删除所有元数据?

[英]How to remove ALL metadata using ffmpeg?

I have input file: infile.mp3 This file contains metadata (artist, genre, etc.) I try remove all metadata for output wav file.我有输入文件:infile.mp3 该文件包含元数据(艺术家、流派等)。我尝试删除输出 wav 文件的所有元数据。

Yes!是的! I found option:我找到了选项:

-map_metadata -1 -map_metadata -1

But output is unexpected for me...但是输出对我来说是意外的......

$ ffmpeg -i infile.mp3 -acodec pcm_s16le -ac 2 -ar 44100 -map_metadata -1 ./outfile.wav $ 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

You see?你看到了吗? encoder metadata exists!编码器元数据存在!

And in wav header after "subchunk1_id" with "fmt " value I expect "subchunk2_id" with "data" value (clear expected example):在带有“fmt”值的“subchunk1_id”之后的wav标头中,我希望“subchunk2_id”带有“data”值(明确的预期示例):

$ strings outfile.wav | more
RIFFFB
WAVEfmt
data

But it is not (LIST, INFOISFT, etc):但它不是(列表、信息等):

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

Well.. How to really remove all metadata for output file?好吧..如何真正删除输出文件的所有元数据?

-fflags +bitexact -flags:v +bitexact -flags:a +bitexact

Maybe copy it to a .wav file first (does not support metadata), then copy it back to an .mp3? 也许首先将它复制到.wav文件(不支持元数据),然后将其复制回.mp3?

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

I have input file: infile.mp3 This file contains metadata (artist, genre, etc.) I try remove all metadata for output wav file.我有输入文件:infile.mp3此文件包含元数据(艺术家,类型等),我尝试删除输出wav文件的所有元数据。

Yes!是的! I found option:我找到了选择:

-map_metadata -1 -map_metadata -1

But output is unexpected for me...但是输出对我来说是意外的...

$ ffmpeg -i infile.mp3 -acodec pcm_s16le -ac 2 -ar 44100 -map_metadata -1 ./outfile.wav $ 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

You see?你看? encoder metadata exists!编码器元数据存在!

And in wav header after "subchunk1_id" with "fmt " value I expect "subchunk2_id" with "data" value (clear expected example):在wav标头中,在“ subchunk1_id”后的值为“ fmt”,我希望“ subchunk2_id”为“数据”值(明确的示例):

$ strings outfile.wav | more
RIFFFB
WAVEfmt
data

But it is not (LIST, INFOISFT, etc):但是不是(LIST,INFOISFT等):

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

Well.. How to really remove all metadata for output file?好吧..如何真正删除输出文件的所有元数据?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM