[FFmpeg-trac] #6949(undetermined:new): No support for multiple values in ID3v2.4 tags.

FFmpeg trac at avcodec.org
Sun Jan 7 04:41:02 EET 2018


#6949: No support for multiple values in ID3v2.4 tags.
-------------------------------------+-------------------------------------
             Reporter:               |                     Type:  defect
  escapereality                      |                 Priority:  normal
               Status:  new          |                  Version:
            Component:               |  unspecified
  undetermined                       |               Blocked By:
             Keywords:  ID3 FFprobe  |  Reproduced by developer:  0
  libavformat                        |
             Blocking:               |
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 Altough ''FFmpeg'' states that it has support for ID3v2.4 tags, there is
 one thing I can't get to work properly.
 The [http://id3.org/id3v2.4.0-frames ID3v2.4 specifications] state the
 following:
   ''There may only be one text information frame of its kind in an
   tag. All text information frames supports multiple strings, stored
   as a null separated list, where null is represented by the
   termination code for the character encoding.''

 When I separate the values in a tag with NULL-characters, the values
 should all be recognized (following the ID3v2.4 specs). However, when I
 use ''FFprobe'', it only shows the first value. For example
 [http://mutagen.readthedocs.io/en/latest/man/mid3v2.html mid3v2] shows the
 tags correctly.
 [[BR]]

 Below is (a snippet of) the output of both ''mid3v2'' and ''FFprobe'' with
 an example file. The '''TCON''' (genre) and '''TPE1''' (artist) contain
 multiple values.

 ''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 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
 }}}


 ----

 '''Verbose console output FFprobe'''

 {{{
 ffprobe started on 2018-01-07 at 03:20:14
 Report written to "ffprobe-20180107-032014.log"
 Command line:
 ffprobe -report "01_Infinite_(Original_Mix).mp3"
 ffprobe version 3.4.1 Copyright (c) 2007-2017 the FFmpeg developers
   built with gcc 7.2.1 (GCC) 20171128
   configuration: --prefix=/usr --disable-debug --disable-static --disable-
 stripping --enable-avisynth --enable-avresample --enable-fontconfig
 --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libass
 --enable-libbluray --enable-libfreetype --enable-libfribidi --enable-
 libgsm --enable-libiec61883 --enable-libmodplug --enable-libmp3lame
 --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg
 --enable-libopus --enable-libpulse --enable-libsoxr --enable-libspeex
 --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab
 --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264
 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid
 --enable-shared --enable-version3
   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
 [NULL @ 0x55a2b5dcdb20] Opening '01_Infinite_(Original_Mix).mp3' for
 reading
 [file @ 0x55a2b5dce520] Setting default whitelist 'file,crypto'
 [mp3 @ 0x55a2b5dcdb20] Format mp3 probed with size=131072 and score=51
 id3v2 ver:4 flags:00 len:108428
 [mp3 @ 0x55a2b5dcdb20] pad 576 1211
 [mp3 @ 0x55a2b5dcdb20] Skipping 0 bytes of junk at 109482.
 [mp3 @ 0x55a2b5dcdb20] Before avformat_find_stream_info() pos: 109482
 bytes read:131072 seeks:0 nb_streams:2
 [mjpeg @ 0x55a2b5dd2480] marker=d8 avail_size_in_buf=94699
 [mjpeg @ 0x55a2b5dd2480] marker parser used 0 bytes (0 bits)
 [mjpeg @ 0x55a2b5dd2480] marker=e0 avail_size_in_buf=94697
 [mjpeg @ 0x55a2b5dd2480] marker parser used 16 bytes (128 bits)
 [mjpeg @ 0x55a2b5dd2480] marker=db avail_size_in_buf=94679
 [mjpeg @ 0x55a2b5dd2480] index=0
 [mjpeg @ 0x55a2b5dd2480] qscale[0]: 0
 [mjpeg @ 0x55a2b5dd2480] marker parser used 67 bytes (536 bits)
 [mjpeg @ 0x55a2b5dd2480] marker=db avail_size_in_buf=94610
 [mjpeg @ 0x55a2b5dd2480] index=1
 [mjpeg @ 0x55a2b5dd2480] qscale[1]: 1
 [mjpeg @ 0x55a2b5dd2480] marker parser used 67 bytes (536 bits)
 [mjpeg @ 0x55a2b5dd2480] marker=c0 avail_size_in_buf=94541
 [mjpeg @ 0x55a2b5dd2480] Changing bps from 0 to 8
 [mjpeg @ 0x55a2b5dd2480] sof0: picture: 600x600
 [mjpeg @ 0x55a2b5dd2480] component 0 2:2 id: 0 quant:0
 [mjpeg @ 0x55a2b5dd2480] component 1 1:1 id: 1 quant:1
 [mjpeg @ 0x55a2b5dd2480] component 2 1:1 id: 2 quant:1
 [mjpeg @ 0x55a2b5dd2480] pix fmt id 22111100
 [mjpeg @ 0x55a2b5dd2480] marker parser used 17 bytes (136 bits)
 [mjpeg @ 0x55a2b5dd2480] marker=c4 avail_size_in_buf=94522
 [mjpeg @ 0x55a2b5dd2480] marker parser used 0 bytes (0 bits)
 [mjpeg @ 0x55a2b5dd2480] marker=c4 avail_size_in_buf=94489
 [mjpeg @ 0x55a2b5dd2480] marker parser used 0 bytes (0 bits)
 [mjpeg @ 0x55a2b5dd2480] marker=c4 avail_size_in_buf=94397
 [mjpeg @ 0x55a2b5dd2480] marker parser used 0 bytes (0 bits)
 [mjpeg @ 0x55a2b5dd2480] marker=c4 avail_size_in_buf=94367
 [mjpeg @ 0x55a2b5dd2480] marker parser used 0 bytes (0 bits)
 [mjpeg @ 0x55a2b5dd2480] escaping removed 318 bytes
 [mjpeg @ 0x55a2b5dd2480] marker=da avail_size_in_buf=94314
 [mjpeg @ 0x55a2b5dd2480] marker parser used 93996 bytes (751968 bits)
 [mjpeg @ 0x55a2b5dd2480] marker=d9 avail_size_in_buf=0
 [mjpeg @ 0x55a2b5dd2480] decode frame unused 0 bytes
 [mp3 @ 0x55a2b5dcdb20] demuxer injecting skip 1105 / discard 0
 [mp3 @ 0x55a2b5dd1620] skip 1105 / discard 0 samples due to side data
 [mp3 @ 0x55a2b5dd1620] skip 1105/1152 samples
 [mp3 @ 0x55a2b5dcdb20] All info found
 [mp3 @ 0x55a2b5dcdb20] After avformat_find_stream_info() pos: 162730 bytes
 read:163840 seeks:0 frames:51
 Input #0, mp3, from '01_Infinite_(Original_Mix).mp3':
   Metadata:
     title           : Infinite (Original Mix)
     artist          : B-Front
     track           : 1
     album           : Infinite
     date            : 2017
     genre           : Hardstyle
     compilation     : 0
     TBPM            : 150
     album_artist    : B-Front
     publisher       : Roughstate
     R128_ALBUM_GAIN : 0
     R128_TRACK_GAIN : 0
     CATALOGNUMBER   : ROUGH082
     REPLAYGAIN_ALBUM_PEAK: 1.000000
     REPLAYGAIN_TRACK_PEAK: 1.000000
     REPLAYGAIN_ALBUM_GAIN: -13.24 dB
     REPLAYGAIN_TRACK_GAIN: -13.24 dB
     iTunNORM        :  0000525E 0000525E 0000CDEC 0000CDEC 00000000
 00000000 00008000 00008000 00000000 00000000
   Duration: 00:05:00.64, start: 0.025056, bitrate: 322 kb/s
     Stream #0:0, 50, 1/14112000: Audio: mp3, 44100 Hz, stereo, s16p, 320
 kb/s
     Metadata:
       encoder         : Lavf
     Side data:
       replaygain: track gain - -13.240000, track peak - 0.000023, album
 gain - -13.240000, album peak - 0.000023,
     Stream #0:1, 1, 1/90000: Video: mjpeg, yuvj420p(pc,
 bt470bg/unknown/unknown), 600x600 [SAR 1:1 DAR 1:1], 90k tbr, 90k tbn, 90k
 tbc
     Metadata:
       comment         : Cover (front)
 [AVIOContext @ 0x55a2b5dd6900] Statistics: 163840 bytes read, 0 seeks
 }}}

--
Ticket URL: <https://trac.ffmpeg.org/ticket/6949>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list