无法使用ffmpeg将注释的元数据提供给MP3文件

时间:2020-05-24 03:33:42

标签: shell audio ffmpeg mp3 aac

我想将AAC转换为MP3,并使用ffmpeg将注释元数据提供给MP3文件。
但是-metadata comment不起作用,并且ffmpeg不会返回任何错误。

我的代码是 ffmpeg -i "test.aac" -ab 128k -metadata comment='this is test' "test.mp3"

我尝试了-metadata description='this is test'并且还更新了ffmpeg。其他功能,例如-metadata artist-metadata album效果很好。

此代码有什么问题?

输出

Stream mapping:
  Stream #0:0 -> #0:0 (aac (native) -> mp3 (libmp3lame))
Press [q] to stop, [?] for help
Output #0, mp3, to 'test.mp3':
  Metadata:
    description     : this is test
    TSSE            : Lavf58.29.100
    Stream #0:0: Audio: mp3 (libmp3lame), 48000 Hz, stereo, fltp, 128 kb/s
    Metadata:
      encoder         : Lavc58.54.100 libmp3lame

环境
ffmpeg版本4.2.2版权所有(c)2000-2019 FFmpeg开发人员
使用Apple clang版本11.0.3(clang-1103.0.32.59)构建的

3 个答案:

答案 0 :(得分:1)

可能的错误。没有进行调查,但是ffmpeg可能将注释元数据写为用户文本框架TXXX),而不是 comment COMM)。

目前,我建议对注释标记使用其他工具。 eyeD3示例:

eyeD3 --comment "added a comment" input.mp3

答案 1 :(得分:1)

ffmpeg 默认将 ID3v2 标签写入 MP3 输出文件。从版本 4.3.1(甚至快照 2021-02-10)开始,它仍然被错误地写为 TXXX 帧而不是 COMM - /libavformat/id3v2.c 无处处理所需的关联,并且 /libavformat/id3v2enc.c 指示 -comment 参数仅在提供要嵌入的图形(即专辑封面)时使用。

作为替代方案,您可以强制使用 ID3v1 标记(具有所有缺点)。您还必须禁用 ID3v2 标签创建,因为几乎所有遇到两个 ID3 版本的软件都更喜欢 v2 中的数据而不是 v1。要添加的参数为-write_id3v1 true -id3v2_version 0,因此整体执行为:

ffmpeg -i "test.aac" -ab 128k -metadata comment='this is test' -write_id3v1 true -id3v2_version 0 "test.mp3"

这按预期工作:没有 ID3v2 标签,只有 ID3v1 标签,其中只填充了评论。

答案 2 :(得分:0)

尝试以下方法:

ffmpeg -i test.aac -c copy -metadata comment='this is test' -b:a 128k test.mp3

此处-b:a用于设置音频比特率。