[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