Хотя FFmpeg утверждает, что поддерживает теги ID3v2.4, есть одна вещь, которую я не могу заставить работать должным образом. Спецификации ID3v2.4 утверждают следующее:
В теге может быть только один фрейм текстовой информации в своем роде. Все текстовые информационные фреймы поддерживают несколько строк, хранящихся в виде списка, разделенного нулями, где ноль представлен кодом завершения для кодировки символов.
Тем не менее, когда я использую FFprobe, он показывает только первое значение. Например, mid3v2 показывает теги правильно. Смотрите ниже оба выхода.
mid3v2:
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?
Заранее спасибо!