我想将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)构建的
答案 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
用于设置音频比特率。