我希望将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)
发布于 2020-05-24 20:09:04
可能是窃听器。ffmpeg正在将注释元数据写入用户文本框架(TXXX),而不是预期的注释(COMM)。
现在,我建议使用另一种工具来进行注释标记。eyeD3示例:
eyeD3 --comment "added a comment" input.mp3发布于 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
复制相似问题