beetbox / beets

music library manager and MusicBrainz tagger
http://beets.io/
MIT License
12.74k stars 1.82k forks source link

More verbose error output on ReplayGain failures when using gstreamer as backend #874

Open nrgetik opened 10 years ago

nrgetik commented 10 years ago

According to #gstreamer on FreeNode, errors associated with a missing plugin, such as

beetsplug.replaygain.ReplayGainError: Error Your GStreamer installation is missing a plug-in. - gstdecodebin2.c(3928): gboolean gst_decode_bin_expose(GstDecodeBin *) (): /GstPipeline:pipeline0/GstDecodeBin:decbin:

Are preceded by more specific messages on the bus, like:

missing-plugin, type=(string)decoder, detail=(GstCaps)audio/x-alac, samplesize=(int)16, name=(string)"Apple\ Lossless\ Audio\ \(ALAC\)\ decoder";

(the above generated by gst-launch-1.0 filesrc location=foo.m4a ! decodebin ! fakesink -m -v where foo.m4a is a currently unsupported file)

Further reference: http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstpbutilsmissingplugins.html#gst-missing-plugin-message-get-description (should be available in the Python API as well)

Printing exactly which plugin is missing in the error output could save certain person(s) a lot of time in addressing questions posed in the #beets channel ;)

sampsyo commented 10 years ago

Sounds like a very reasonable idea—somebody could look into how to receive this error message.

Also, IMO, that error (your GStreamer is missing a plugin...) should not be printed when importing. Silent failure is preferable for expected errors like that. Is it dumping out during import, or was this when running beet replaygain (or in verbose mode)?

nrgetik commented 10 years ago

During a beet replaygain -a, not in verbose mode. IIRC, errors were silent (replaced by a generic one-liner) during import, but that was back when I had replaygain configured to use command, not gstreamer.