GNOME Bugzilla – Bug 732386
ffdec_flac flac playback error: Internal GStreamer error: negotiation problem.
Last modified: 2014-06-29 15:34:45 UTC
$ gst-launch-0.10 -v filesrc location=/home/a/b.flac ! ffdec_flac ! pulsesink Setting pipeline to PAUSED ... Pipeline is PREROLLING ... ERROR: from element /GstPipeline:pipeline0/ffdec_flac:ffdec_flac0: Internal GStreamer error: negotiation problem. Please file a bug at http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer. Additional debug info: gstffmpegdec.c(2822): gst_ffmpegdec_chain (): /GstPipeline:pipeline0/ffdec_flac:ffdec_flac0: ffdec_flac: input format was not set before data start ERROR: pipeline doesn't want to preroll. Setting pipeline to NULL ... Freeing pipeline ... ---- Using flac_dec works OK: $ gst-launch-0.10 -v filesrc location=/home/a/b.flac ! flacdec ! pulsesink Setting pipeline to PAUSED ... Pipeline is PREROLLING ... /GstPipeline:pipeline0/GstFlacDec:flacdec0.GstPad:src: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2 /GstPipeline:pipeline0/GstPulseSink:pulsesink0.GstPad:sink: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2 Pipeline is PREROLLED ... Setting pipeline to PLAYING ... New clock: GstPulseSinkClock /GstPipeline:pipeline0/GstPulseSink:pulsesink0: volume = 0.215974 /GstPipeline:pipeline0/GstPulseSink:pulsesink0: mute = FALSE /GstPipeline:pipeline0/GstPulseSink:pulsesink0: volume = 0.215974 /GstPipeline:pipeline0/GstPulseSink:pulsesink0: mute = FALSE ^CCaught interrupt -- handling interrupt. Interrupt: Stopping pipeline ... Execution ended after 4004723573 ns. Setting pipeline to PAUSED ... Setting pipeline to READY ... /GstPipeline:pipeline0/GstPulseSink:pulsesink0.GstPad:sink: caps = NULL /GstPipeline:pipeline0/GstFlacDec:flacdec0.GstPad:src: caps = NULL Setting pipeline to NULL ... Freeing pipeline ... -----
Also: $ gst-launch-1.0 -v filesrc location=/home/a/b.flac ! flacdec ! pulsesink Setting pipeline to PAUSED ... Pipeline is PREROLLING ... ERROR: from element /GstPipeline:pipeline0/GstFileSrc:filesrc0: Internal data flow error. Additional debug info: gstbasesrc.c(2865): gst_base_src_loop (): /GstPipeline:pipeline0/GstFileSrc:filesrc0: streaming task paused, reason error (-5) ERROR: pipeline doesn't want to preroll. Setting pipeline to NULL ... Freeing pipeline ...
Please try: gst-launch-1.0 playbin uri=file:///path/to/file or gst-launch-1.0 uridecodebin uri=file:///path/to/file ! audioconvert ! audioresample ! pulsesink first to make sure it's not your pipeline that's problematic. Your pipeline needs a flacparse before the decoder.
Trying both: playbin and uridecodebin play the file OK. ===== Adding flacparse to $ gst-launch-0.10 -v filesrc location=/home/a/b.flac ! flacparse ! ffdec_flac ! pulsesink allows it to play OK. (a few pages of garbage/header is shown as streamheader=(buffer)< 7f464....) ===== I notice with gst-inspect that ffdec_flac (0.1) became avdec_flac (1.0+). $ gst-launch-1.0 -v filesrc location= /home/a/b.flac ! flacparse ! avdec_flac ! pulsesink which also shows pages of garbage/header, but does play the file OK, as long as flacparse is included. (Not sure how one would come to know that the extra flacparse might be needed). So, seems all OK. I don't remember which gst-based app I thought I saw issues trying to playback flac ;-) Closing (I'm assuming gst-launch is supposed to show that garbage ...)
It's headers, not garbage :) If it's a lot it's probably because it includes coverart. It's only shown if you pass -v. We could probably shorten that output. We require parser in front of almost all decoders now in 1.x. It's just one of those things you have to know. You're supposed to use decodebin/playbin and friends instead of building your own pipelines :)