尽管 FFmpeg 声称它支持 ID3v2.4 标签,但有一件事我无法正常工作。ID3v2.4 规格陈述如下:
一个标签中只能有一个同类型的文本信息框。所有文本信息框都支持多个字符串,以空值分隔的列表形式存储,其中空值表示字符编码的终止代码。
但是,当我使用 FFprobe 时,它只显示第一个值。例如中期3v2正确显示标签。请参阅下面的两个输出。
中3v2:
mid3v2 --list 01_Infinite_\(Original_Mix\).mp3
IDv2 tag info for 01_Infinite_(Original_Mix).mp3
TALB=Infinite
TBPM=150
TCON=Hardstyle / Test / Example / Hard Dance
TDRC=2017
TIT2=Infinite (Original Mix)
TPE1=B-Front / Second Artist Example
TPE2=B-Front
TPUB=Roughstate
FFmpeg:
ffprobe -hide_banner 01_Infinite_\(Original_Mix\).mp3
Input #0, mp3, from '01_Infinite_(Original_Mix).mp3':
Metadata:
title : Infinite (Original Mix)
artist : B-Front
album : Infinite
date : 2017
genre : Hardstyle
TBPM : 150
album_artist : B-Front
publisher : Roughstate
TCON(流派)和 TPE1(艺术家)字段有多个值,以 NULL 字符分隔。FFmpeg 不会显示多个字段。
是我忽略了什么吗,还是这只是没有在 FFmpeg/libavformat 中实现?
提前致谢!
答案1
不可以。虽然 ID3 v2.4 中的 ttags 支持多个字符串,但是当它遇到 NULL 时,ID3v2 解析器会终止字符串提取,而不是消耗完整的标签长度。
提交错误报告至https://trac.ffmpeg.org。