[FFmpeg-trac] #7579(avformat:new): ID3 metadata not written in WAV

FFmpeg trac at avcodec.org
Thu Nov 29 08:26:14 EET 2018


#7579: ID3 metadata not written in WAV
--------------------------------------+------------------------------------
             Reporter:  slhck         |                    Owner:
                 Type:  enhancement   |                   Status:  new
             Priority:  wish          |                Component:  avformat
              Version:  git-master    |               Resolution:
             Keywords:  wav metadata  |               Blocked By:
             Blocking:                |  Reproduced by developer:  0
Analyzed by developer:  0             |
--------------------------------------+------------------------------------

Comment (by slhck):

 > Please remember to always test current FFmpeg git head

 I did test with Git head as well – please see the original description.
 For the sake of completeness, the output:

 {{{
 ~/Downloads/ffmpeg -i 04\ -\ Mr\ Unconductive\ Frying\ Pan\ Handle\ Man\
 -\ A\ Beautiful\ Ballada\ Cover\ -\ giovanigoulart.wav -c copy
 -map_metadata 0 -t 1 test.wav
 ffmpeg version N-92525-ge488d7b4f5-tessus  https://evermeet.cx/ffmpeg/
 Copyright (c) 2000-2018 the FFmpeg developers
   built with Apple LLVM version 10.0.0 (clang-1000.11.45.5)
   configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-
 version=tessus --enable-avisynth --enable-fontconfig --enable-gpl
 --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d
 --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-
 libmp3lame --enable-libmysofa --enable-libopencore-amrnb --enable-
 libopencore-amrwb --enable-libopus --enable-librubberband --enable-
 libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-
 libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc
 --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264
 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg
 --enable-libzmq --enable-libzvbi --enable-version3 --pkg-config-
 flags=--static --disable-ffplay
   libavutil      56. 24.101 / 56. 24.101
   libavcodec     58. 40.100 / 58. 40.100
   libavformat    58. 23.100 / 58. 23.100
   libavdevice    58.  6.100 / 58.  6.100
   libavfilter     7. 46.100 /  7. 46.100
   libswscale      5.  4.100 /  5.  4.100
   libswresample   3.  4.100 /  3.  4.100
   libpostproc    55.  4.100 / 55.  4.100
 Guessed Channel Layout for Input Stream #0.0 : stereo
 Input #0, wav, from '04 - Mr Unconductive Frying Pan Handle Man - A
 Beautiful Ballada Cover - giovanigoulart.wav':
   Duration: 00:03:46.72, bitrate: 2845 kb/s
     Stream #0:0: Audio: pcm_f32le ([3][0][0][0] / 0x0003), 44100 Hz,
 stereo, flt, 2822 kb/s
 Output #0, wav, to 'test.wav':
   Metadata:
     ISFT            : Lavf58.23.100
     Stream #0:0: Audio: pcm_f32le ([3][0][0][0] / 0x0003), 44100 Hz,
 stereo, flt, 2822 kb/s
 Stream mapping:
   Stream #0:0 -> #0:0 (copy)
 Press [q] to stop, [?] for help
 size=     348kB time=00:00:00.99 bitrate=2856.1kbits/s speed= 599x
 video:0kB audio:348kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: 0.031991%
 }}}

 > What's wrong with small sample files?

 Like I wrote, the metadata is added in the end of the file (as indicated
 by the hexdump), so I cannot just truncate the 80MB WAV to a short one
 that exhibits the same issue. Hence I supplied the original file.

 As I do not know how the file was generated, I cannot produce a small
 sample that shows the same behavior.

 I can create a file that I then tag with `id3tag`, but reading this,
 ffmpeg shows a different message ("Discarding ID3 tags because more
 suitable tags were found.") which implies that the tags saved by `id3tag`
 are different from the ones in the large sample file that I have:

 {{{
 ➜ id3tag -aFoo -sBar test2.wav
 +++ Artist  = Foo
 +++ Song    = Bar
 Tagging test2.wav: attempting v1 and v2, tagged v1 and v2

 ➜ ~/Downloads/ffmpeg -i test2.wav -c copy -map_metadata 0 test3.wav
 ffmpeg version N-92525-ge488d7b4f5-tessus  https://evermeet.cx/ffmpeg/
 Copyright (c) 2000-2018 the FFmpeg developers
   built with Apple LLVM version 10.0.0 (clang-1000.11.45.5)
   configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-
 version=tessus --enable-avisynth --enable-fontconfig --enable-gpl
 --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d
 --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-
 libmp3lame --enable-libmysofa --enable-libopencore-amrnb --enable-
 libopencore-amrwb --enable-libopus --enable-librubberband --enable-
 libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-
 libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc
 --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264
 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg
 --enable-libzmq --enable-libzvbi --enable-version3 --pkg-config-
 flags=--static --disable-ffplay
   libavutil      56. 24.101 / 56. 24.101
   libavcodec     58. 40.100 / 58. 40.100
   libavformat    58. 23.100 / 58. 23.100
   libavdevice    58.  6.100 / 58.  6.100
   libavfilter     7. 46.100 /  7. 46.100
   libswscale      5.  4.100 /  5.  4.100
   libswresample   3.  4.100 /  3.  4.100
   libpostproc    55.  4.100 / 55.  4.100
 [wav @ 0x7fe645000800] Discarding ID3 tags because more suitable tags were
 found.
 Input #0, wav, from 'test2.wav':
   Metadata:
     encoder         : Lavf58.23.100
   Duration: 00:00:01.01, bitrate: 2839 kb/s
     Stream #0:0: Audio: pcm_f32le ([3][0][0][0] / 0x0003), 44100 Hz,
 stereo, flt, 2822 kb/s
 Output #0, wav, to 'test3.wav':
   Metadata:
     ISFT            : Lavf58.23.100
     Stream #0:0: Audio: pcm_f32le ([3][0][0][0] / 0x0003), 44100 Hz,
 stereo, flt, 2822 kb/s
 Stream mapping:
   Stream #0:0 -> #0:0 (copy)
 Press [q] to stop, [?] for help
 size=     348kB time=00:00:00.99 bitrate=2856.1kbits/s speed=1.09e+03x
 video:0kB audio:348kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: 0.031991%

 ➜ id3info test2.wav test3.wav

 *** Tag information for test2.wav
 === TPE1 (Lead performer(s)/Soloist(s)): Foo
 === TIT2 (Title/songname/content description): Bar

 *** Tag information for test3.wav
 }}}

 Either way they do not get written to the output.

--
Ticket URL: <https://trac.ffmpeg.org/ticket/7579#comment:2>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list