我希望将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环境
版本4.2.2版权(c) 2000-2019 ffmpeg开发者
用Apple版本11.0.3构建(clang-1103.0.32.59)
发布于 2021-02-11 01:13:23
默认情况下,ffmpeg将ID3v2标记写入MP3输出文件。到了4.3.1版本(甚至是快照 2021-02-10和2022-09-20),它仍然被错误地写成了TXXX框架,而不是COMM -4.3.1没有处理所需的关联,而/libavformat/id3v2enc.c指出,-comment参数仅用于提供要嵌入的图形(即相册封面)。
作为另一种选择,您可以强制使用ID3v1标记(有其所有缺点)。您还必须禁用ID3v2标记创建,因为几乎每一个遇到两个ID3版本的软件都更喜欢来自v2而不是v1的数据。要添加的参数将是-write_id3v1 true -id3v2_version 0,因此总体执行是(在Windows上):
ffmpeg -i "test.aac" -ab 128k -metadata "comment=this is a test" -write_id3v1 true -id3v2_version 0 "test.mp3"这与预期的一样:没有ID3v2标记,只有一个只填充注释的ID3v1标记。引号从comment之前开始,在test之后结束,所以Windows知道整个参数从哪里开始和结束(默认情况下不是用下一个空格字符--这也是文件名应该进入引号的原因)。
https://stackoverflow.com/questions/61981314
复制相似问题