[FFmpeg-trac] #9067(ffmpeg:new): Use standard-compliant ID3v2 tag instead of TXXX TRACKTOTAL
FFmpeg
trac at avcodec.org
Sat Jan 16 20:26:50 EET 2021
#9067: Use standard-compliant ID3v2 tag instead of TXXX TRACKTOTAL
---------------------------------+----------------------------------
Reporter: sbrabec | Type: defect
Status: new | Priority: minor
Component: ffmpeg | Version: 3.4.6
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
---------------------------------+----------------------------------
Summary of the bug:
When coverting from a format using Vorbis Comments (e. g. FLAC) to a
format using ID3v2 (e. g. MP3), ffmpeg incorrectly converts tag TRACKTOTAL
to a custom TXXX tag TRACKTOTAL. However this notation is widely accepted
by the software, it is not a standard-compliant behavior.
Recent ID3v2.4 specifies TRCK in format "track#/track total".
https://id3.org/id3v2.4.0-frames
Even 21 years old ID3v2.2.0 already specified TRK in format "track#/track
total". https://id3.org/id3v2-00
The correct conversion from Vorbis Comments to ID3v2 should be:
TRCK="TRACKNUMBER/TRACKTOTAL"
TPOS="DISCNUMBER/DISCTOTAL"
and vice versa, from ID3v2 to Vorbis Comments:
TRACKNUMBER=leading part of TRCK
TRACKTOTAL=trailing part of TRCK or TRACKTOTAL (to support deprecated
format)
DISCNUMBER=leading part of TPOS
DISCTOTAL=trailing part of TPOS or DISCTOTAL (to support deprecated
format)
Notes:
- TRACKTOTAL is not part of a Vorbis Comments specification, but it is a
widely accepted proposed standard. https://wiki.xiph.org/Field_names
- There is a software that uses TOTALTRACKS and TOTALDISCS Vorbis Comments
instead of upper mentioned. (deprecated)
How to reproduce:
Edit any FLAC file with e. g. easytag and fill TRACKTOTAL value (number of
tracks in the album).
ffmpeg -i foo.flac -ab 320k -map_metadata 0 -c:0 copy foo.mp3
Example:
{{{
+ ffmpeg -i './Allegro Milana/Allegro Milana plays a tribute to Rondo
Veneziano/16 Alla Turca.flac' -ab 320k -map_metadata 0 -id3v2_version 3
-c:0 copy '../../MP3/CDmp3new/./Allegro Milana/Allegro Milana plays a
tribute to Rondo Veneziano/16 Alla Turca.mp3'
ffmpeg version 3.4.8 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 7 (SUSE Linux)
configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64
--incdir=/usr/include/ffmpeg --extra-cflags='-fmessage-length=0 -grecord-
gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong
-funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -g'
--optflags='-fmessage-length=0 -grecord-gcc-switches -O2 -Wall
-D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables
-fasynchronous-unwind-tables -fstack-clash-protection -g' --disable-
htmlpages --enable-pic --disable-stripping --enable-shared --disable-
static --enable-gpl --disable-openssl --enable-avresample --enable-libcdio
--enable-gnutls --enable-ladspa --enable-libass --enable-libbluray
--enable-libcelt --enable-libcdio --enable-libdc1394 --enable-libfreetype
--enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-libopus
--enable-libpulse --enable-libspeex --enable-libtheora --enable-libtwolame
--enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp
--enable-libzimg --enable-libzvbi --enable-vaapi --enable-vdpau --enable-
libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-
libx264 --enable-libx265 --enable-libxvid
libavutil 55. 78.100 / 55. 78.100
libavcodec 57.107.100 / 57.107.100
libavformat 57. 83.100 / 57. 83.100
libavdevice 57. 10.100 / 57. 10.100
libavfilter 6.107.100 / 6.107.100
libavresample 3. 7. 0 / 3. 7. 0
libswscale 4. 8.100 / 4. 8.100
libswresample 2. 9.100 / 2. 9.100
libpostproc 54. 7.100 / 54. 7.100
Input #0, flac, from './Allegro Milana/Allegro Milana plays a tribute to
Rondo Veneziano/16 Alla Turca.flac':
Metadata:
TITLE : Alla Turca
ARTIST : Allegro Milana
ALBUM : Allegro Milana plays a tribute to Rondo Veneziano
DATE : 1994
track : 16
TRACKTOTAL : 16
GENRE : Classical
Duration: 00:03:45.67, start: 0.000000, bitrate: 894 kb/s
Stream #0:0: Audio: flac, 44100 Hz, stereo, s16
Stream #0:1: Video: mjpeg, yuvj444p(pc, bt470bg/unknown/unknown),
599x589 [SAR 1:1 DAR 599:589], 90k tbr, 90k tbn, 90k tbc
Metadata:
comment : Cover (front)
Stream mapping:
Stream #0:1 -> #0:0 (copy)
Stream #0:0 -> #0:1 (flac (native) -> mp3 (libmp3lame))
}}}
--
Ticket URL: <https://trac.ffmpeg.org/ticket/9067>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list