如何阻止ffmpeg操纵mp3元数据?

如何阻止ffmpeg操纵mp3元数据?,ffmpeg,Ffmpeg,我正在使用ffmpeg更改mp3文件的比特率。它工作得很好,但有一件事非常令人沮丧 ffmpeg会自动更改某些元数据字段。具体地说,它将ID3v2.3转换为ID3v2.4,但操作不正确。例如,它写入了ID3v2.4中实际上不存在的TYER字段。但最令人沮丧的是,它将USLT字段转换为歌词LANGCODE(如歌词eng)。大多数音乐播放器都无法识别此标签 我不想让ffmpeg弄乱元数据字段。我只想让它改变比特率。是否有必要告诉ffmpeg它不应该接触任何元数据字段 我正在windows 64位中运

我正在使用ffmpeg更改mp3文件的比特率。它工作得很好,但有一件事非常令人沮丧

ffmpeg会自动更改某些元数据字段。具体地说,它将ID3v2.3转换为ID3v2.4,但操作不正确。例如,它写入了ID3v2.4中实际上不存在的
TYER
字段。但最令人沮丧的是,它将
USLT
字段转换为
歌词LANGCODE
(如
歌词eng
)。大多数音乐播放器都无法识别此标签

我不想让ffmpeg弄乱元数据字段。我只想让它改变比特率。是否有必要告诉ffmpeg它不应该接触任何元数据字段

我正在windows 64位中运行ffmpeg 4.0.2。选项包括:

ffmpeg -i input.mp3 -codec:a libmp3lame -b:a 128k output.mp3

没有,
-id3v2\u版本3
没有帮助。它纠正了TYER的问题,但没有歌词问题。

我无法用
ffmpeg
解决歌词问题,但能够将歌词从
Lyps-ENG
元数据字段复制到
USLT
字段。
我使用该工具批量复制数据。
它具有批处理操作的操作功能

我所做的:

  • 动作->动作
  • 新建->新建->格式值
  • “字段”:未同步歌词,“格式字符串”:%LYRS-ENG%
  • 导航到包含文件的文件夹,选择它们并执行创建的操作

我混合使用了ffmpeg和这个问题的第一个答案:由于下面的cmd循环,我首先转换一个完整的文件文件夹(在本例中,将.flac文件转换为.mp3)。现在,我正在改变我的整个iTunes库的比特率,这样就不会发生太多的事情,而ffmpeg确实改变了歌词的标签。但使用mp3tag并创建此操作可以让我将它们切换回iTunes知道的标签。这是一个非常快速的方法,我搜索了很长时间

FOR /F "tokens=*" %G IN ('dir /b *.flac') DO ffmpeg -i "%G" -ab 320k -acodec mp3 "3%~nG.mp3"

FFmpeg将重写标记,默认版本为2.4。歌词也会像你看到的那样写出来。你能用输出文件再次确认TYER是用你的第一个命令写的吗?@Gyan是的,如果原始文件是2.3,它会写TYER。如果原始文件是2.4,则不会。无法在此处复制它。已通过Exiftool检查。创建后,您是否在单独的命令中检查输出?我使用
strings
重新检查了输出。它就在我的输入中;它有
-id3v2\u版本3
输出;不存在。Th输入标记格式不正确。泰勒应该是4(+1)个字符;在您的输入中,它是10个字符。ffmpeg的ID3解析器不会完全中止,而是将TXXX帧中的key+值写入输出。可能被认为是一个bug。