GNOME Bugzilla – Bug 556734
[decodebin] stripped id3 tags
Last modified: 2009-05-31 22:40:45 UTC
When trying to convert mp3 file to lower bitrate mp3 using pipeline: gst-launch-0.10 -v filesrc location=foo.mp3 ! decodebin ! identity ! audioconvert ! lame ! id3v2mux ! filesink location=bar.mp3 Output file "bar.mp3" does not have id3 tags of original file, and output of 'identity' plugin also shows that 'decodebin' output has no tags. Command gst-launch-0.10 -t playbin uri=file://foo.mp3 displays tags present in original file. This problem exists for all (as far as I could tell) my mp3 files. The tags should be id3v2.4 (easytag - libid3tag). If instead of mp3 file I try to convert ogg, the tags (author, album, etc.) are decoded and added to resulting mp3 file as id3 tags. If it helps I am using Gentoo, but AFAIK there are no major Gentoo-specific patches used. Will try HEAD revision during the weekend.
Which versions of gstreamer, gst-plugins-base, gst-plugins-good and gst-plugins-ugly do you have installed? Also, do you have the Fluendo MP3 decoder plugin installed? There was a bug in previous releases of gst-plugins-ugly that would cause this behaviour but with the latest releases this should be fixed, no idea if this bug is also present in the Fluendo MP3 decoder.
Created attachment 120877 [details] Output from running gst-launch with 'identity' after decodebin
I updated my packages to these versions without changes in behaviour: gstreamer - 0.10.21 gst-plugins-base - 0.10.21 gst-plugins-good - 0.10.10 gst-plugins-ugly - 0.10.9 Gentoo has changed the way they install plugins so even when package gst-plugins-good exists it doesn't install all plugins (some have their own ebuilds). I don't think that's the case but it sure makes ensuring that I am up to date a bit harder. There are few plugins from other versions left, but they are not used in example pipeline (ogg, theora, xv, etc.). I will update them also, so we will see. When I encountered this problem I also tried Fluendo and it didn't work either. I added attachment with output from 'identity' plugin, maybe it will help.
I just found workaround and reason for the problems. Apparently for some reason demuxer stops processing tags after finding replaygain tags. If I remove replaygain tags with: mp3gain -s d foobar.mp3 Everything works as expected and bug doesn't show up. I think that this should make it easier to pinpoint the problem.
I too am having the same issue, same symptoms. ReplayGain tags appear to cause the bug to occur.
Could you attach such an MP3 file with replaygain tags that shows this behaviour? A small testcase with 10 seconds of silence or something would be good enough already ;)
As moch on IRC remarked earlier, it might have to do with tagdemux not caching tag events received on the sink pad when the source pad is not yet linked, so that id3demux ! apedemux ! ... would drop the id3 tags, for example.
Created attachment 120941 [details] Short MP3 with replygain tags. Attached is a test file. I created it using: $ gst-launch-0.10 audiotestsrc num-buffers=100 ! taginject tags="title=testt,artist=testa" ! lame ! id3v2mux ! filesink location=test.mp3 [...] $ mp3gain test.mp3 You can validate it has tags: $ gst-launch-0.10 -m filesrc location=test.mp3 ! id3demux ! fakesink silent=TRUE 2>/dev/null | grep taglist Got Message from element "id3demux0" (tag): taglist, title=(string)testt, artist=(string)testa; And you can validate it fails: $ gst-launch-0.10 filesrc location=test.mp3 ! decodebin ! audioconvert ! lame ! id3v2mux ! filesink location=verify.mp3 [...] $ gst-launch-0.10 -m filesrc location=verify.mp3 ! id3demux ! fakesink silent=TRUE 2>/dev/null | grep taglist [Nothing!]
Hey Sebastian :) I think, your question in comment #6 has been answered. I am thus reopening.
Should be fixed in the next -base release (0.10.24): tpm@zingle:~/gst/git/gstreamer$ gst-launch-0.10 filesrc location=~/samples/556734-multiple-id3-tags.mp3 ! decodebin ! fakesink -v 2>&1 | grep tag /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstApeDemux:apedemux0.GstPad:sink: caps = application/x-apetag /GstPipeline:pipeline0/GstFakeSink:fakesink1: last-message = "event ******* E (type: 118, taglist, title=(string)testt, artist=(string)testa;) 0x1eacb80" /GstPipeline:pipeline0/GstFakeSink:fakesink1: last-message = "event ******* E (type: 118, taglist, replaygain-track-gain=(double)-12.43, replaygain-track-peak=(double)0.76876299999999997;) 0x1eb2000" /GstPipeline:pipeline0/GstFakeSink:fakesink1: last-message = "event ******* E (type: 118, taglist, audio-codec=(string)\"MPEG\\ 1\\ Audio\\,\\ Layer\\ 3\\ \\(MP3\\)\";) 0x1ebfe80" /GstPipeline:pipeline0/GstFakeSink:fakesink1: last-message = "event ******* E (type: 118, taglist, bitrate=(guint)128000, has-crc=(boolean)false, channel-mode=(string)mono;) 0x1eb2400" *** This bug has been marked as a duplicate of 580318 ***