GNOME Bugzilla – Bug 375534
FLV demuxer produces bad framerate, durations
Last modified: 2007-06-05 14:00:51 UTC
The ffmpeg FLV demuxer says that everything has a framerate of 1000 fps. This appears to be because gstffmpegdemux is misusing the time_base as a framerate, in some cases, which seems to be a bizarre thing to do. FLV doesn't actually have a fixed framerate, only individual timestamps. The durations are also wrong; all of them are set to zero.
http://dl1.streaming.telenetmedia.be/gtv/1000/4898/11379.rondestart2.flv is a nice example. gst-launch-0.10 -v playbin uri=file:///home/beheerder/11379.rondestart2.flv Pijplijn gezet op gepauzeerd ... /playbin0/decodebin0/typefind.src: caps = video/x-flv Pijplijn is bezig met PREROLL ... /playbin0/selector_audio_src0: active-pad = "sink0" /playbin0/selector_video_src1: active-pad = "sink0" [...] perfectly working audio stuff stripped /playbin0/decodebin0/queue2.sink: caps = video/x-vp6-flash, width=(int)656, height=(int)480, framerate=(fraction)1000/1 /playbin0/decodebin0/queue2.src: caps = video/x-vp6-flash, width=(int)656, height=(int)480, framerate=(fraction)1000/1 /playbin0/decodebin0/ffdec_vp6f0.sink: caps = video/x-vp6-flash, width=(int)656, height=(int)480, framerate=(fraction)1000/1 /playbin0/decodebin0/ffdec_vp6f0.src: caps = video/x-raw-yuv, width=(int)656, height=(int)480, framerate=(fraction)1000/1, format=(fourcc)I420 /playbin0/selector_video_src1.sink0: caps = video/x-raw-yuv, width=(int)656, height=(int)480, framerate=(fraction)1000/1, format=(fourcc)I420 /playbin0/decodebin0.src1: caps = video/x-raw-yuv, width=(int)656, height=(int)480, framerate=(fraction)1000/1, format=(fourcc)I420 /playbin0/decodebin0.src1.proxypad2: caps = video/x-raw-yuv, width=(int)656, height=(int)480, framerate=(fraction)1000/1, format=(fourcc)I420 /playbin0/selector_video_src1.src: caps = video/x-raw-yuv, width=(int)656, height=(int)480, framerate=(fraction)1000/1, format=(fourcc)I420 /playbin0/preroll_video_src1.sink: caps = video/x-raw-yuv, width=(int)656, height=(int)480, framerate=(fraction)1000/1, format=(fourcc)I420 /playbin0/preroll_video_src1.src: caps = video/x-raw-yuv, width=(int)656, height=(int)480, framerate=(fraction)1000/1, format=(fourcc)I420 /playbin0/vbin/id.src: caps = video/x-raw-yuv, width=(int)656, height=(int)480, framerate=(fraction)1000/1, format=(fourcc)I420 /playbin0/vbin/id.sink: caps = video/x-raw-yuv, width=(int)656, height=(int)480, framerate=(fraction)1000/1, format=(fourcc)I420 /playbin0/vbin.sink: caps = video/x-raw-yuv, width=(int)656, height=(int)480, framerate=(fraction)1000/1, format=(fourcc)I420 /playbin0/vbin.sink: caps = video/x-raw-yuv, width=(int)656, height=(int)480, framerate=(fraction)1000/1, format=(fourcc)I420 /playbin0/vbin.sink.proxypad6: caps = video/x-raw-yuv, width=(int)656, height=(int)480, framerate=(fraction)1000/1, format=(fourcc)I420 /playbin0/vbin/vconv.src: caps = video/x-raw-yuv, format=(fourcc)YV12, width=(int)656, height=(int)480, framerate=(fraction)1000/1 /playbin0/vbin/vconv.sink: caps = video/x-raw-yuv, width=(int)656, height=(int)480, framerate=(fraction)1000/1, format=(fourcc)I420 /playbin0/vbin/vscale.src: caps = video/x-raw-yuv, format=(fourcc)YV12, width=(int)656, height=(int)480, framerate=(fraction)1000/1 /playbin0/vbin/vscale.sink: caps = video/x-raw-yuv, format=(fourcc)YV12, width=(int)656, height=(int)480, framerate=(fraction)1000/1 /playbin0/vbin/videosink/videosink-actual-sink.sink: caps = video/x-raw-yuv, format=(fourcc)YV12, width=(int)656, height=(int)480, framerate=(fraction)1000/1 /playbin0/vbin/videosink.sink: caps = video/x-raw-yuv, format=(fourcc)YV12, width=(int)656, height=(int)480, framerate=(fraction)1000/1 /playbin0/vbin/videosink.sink: caps = video/x-raw-yuv, format=(fourcc)YV12, width=(int)656, height=(int)480, framerate=(fraction)1000/1 /playbin0/vbin/videosink.sink.proxypad5: caps = video/x-raw-yuv, format=(fourcc)YV12, width=(int)656, height=(int)480, framerate=(fraction)1000/1 /playbin0/decodebin0/queue2: max-size-bytes = 17316 /playbin0/decodebin0/queue2: max-size-bytes = 36444 Pijplijn klaar met PREROLL ... Pijplijn gezet op afspelen ...
My gstreamer config, up to date Ubuntu 7.04 as of 2007/04/08: ii gstreamer0.10-alsa 0.10.12-0ubuntu1 GStreamer plugin for ALSA un gstreamer0.10-audiosink <geen> (geen beschrijving beschikbaar) un gstreamer0.10-colorspace <geen> (geen beschrijving beschikbaar) ii gstreamer0.10-esd 0.10.5-1ubuntu2 GStreamer plugin for ESD ii gstreamer0.10-ffmpeg 0.10.2-0ubuntu4 FFmpeg plugin for GStreamer ii gstreamer0.10-fluendo-mp3 0.10.4.debian-1 Fluendo mp3 decoder GStreamer plugin ii gstreamer0.10-fluendo-mpe 0.10.4-0ubuntu1 Fluendo GStreamer plugin for MPEG2 demuxing ii gstreamer0.10-gnomevfs 0.10.12-0ubuntu1 GStreamer plugin for GnomeVFS un gstreamer0.10-lame <geen> (geen beschrijving beschikbaar) un gstreamer0.10-pitfdll <geen> (geen beschrijving beschikbaar) un gstreamer0.10-plugins <geen> (geen beschrijving beschikbaar) ii gstreamer0.10-plugins-bad 0.10.4-1ubuntu1 GStreamer plugins from the "bad" set ii gstreamer0.10-plugins-bad 0.10.4-3 GStreamer plugins from the "bad" set (Multiverse Variant) ii gstreamer0.10-plugins-bas 0.10.12-0ubuntu1 GStreamer plugins from the "base" set ii gstreamer0.10-plugins-bas 0.10.12-0ubuntu1 GStreamer helper programs from the "base" set ii gstreamer0.10-plugins-goo 0.10.5-1ubuntu2 GStreamer plugins from the "good" set ii gstreamer0.10-plugins-ugl 0.10.5-0ubuntu2 GStreamer plugins from the "ugly" set ii gstreamer0.10-plugins-ugl 0.10.5-2 GStreamer plugins from the "ugly" set (Multiverse Variant) ii gstreamer0.10-tools 0.10.12-0ubuntu2 Tools for use with GStreamer un gstreamer0.10-videosink <geen> (geen beschrijving beschikbaar) ii gstreamer0.10-x 0.10.12-0ubuntu1 GStreamer plugins for X11 and Pango
*** Bug 382631 has been marked as a duplicate of this bug. ***
Created attachment 87628 [details] [review] Use the duration from the context if there is no duration in the stream set.
*** Bug 440164 has been marked as a duplicate of this bug. ***
Patch by: Jan Arne Petersen <jpetersen at jpetersen dot org> * ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_src_query): Use total duration when the individual stream duration is not known. Fixes #375534.