GNOME Bugzilla – Bug 608332
flvdemux internal data stream error
Last modified: 2012-10-26 19:57:11 UTC
Created attachment 152480 [details] Example flv video flvdemux fails to demux an H264 video stream on some videos found on justin.tv. An example file can be found at http://archive.justin.tv/archives/2010-1-27/live_user_savvas1252_1264614335.flv. I'm also attaching a truncated version of this file. Tested with gst-launch, playbin and playbin2 behave differently. playbin ======= osomon@bodeguita:~/temp$ LANG=C GST_DEBUG=*flv*:2 gst-launch playbin uri=file:///home/osomon/temp/live_user_savvas1252_1264614335.flv (gst-launch-0.10:10220): GLib-WARNING **: g_set_prgname() called multiple times Setting pipeline to PAUSED ... Pipeline is PREROLLING ... 0:00:00.033945105 10220 0x9233d68 WARN flvdemux gstflvdemux.c:331:gst_flv_demux_pull_range:<flvdemux0> failed when pulling 12 bytes from offset 72395: unexpected ** (gst-launch-0.10:10220): WARNING **: could not link video/x-raw-yuv, width=(int)320, height=(int)240, framerate=(fraction)-67108825/257, format=(fourcc)I420, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1: -4 Pipeline is PREROLLED ... Setting pipeline to PLAYING ... New clock: GstPulseSinkClock 0:00:00.329735778 10220 0x9233d68 WARN flvdemux gstflvdemux.c:339:gst_flv_demux_pull_range:<flvdemux0> partial pull got 646 when expecting 3537 from offset 68858 Got EOS from element "playbin0". Execution ended after 934959309 ns. Setting pipeline to PAUSED ... Setting pipeline to READY ... Setting pipeline to NULL ... Freeing pipeline ... playbin2 ======== osomon@bodeguita:~/temp$ LANG=C GST_DEBUG=*flv*:2 gst-launch playbin2 uri=file:///home/osomon/temp/live_user_savvas1252_1264614335.flv (gst-launch-0.10:10234): GLib-WARNING **: g_set_prgname() called multiple times Setting pipeline to PAUSED ... Pipeline is PREROLLING ... 0:00:00.038427246 10234 0x8739408 WARN flvdemux gstflvdemux.c:331:gst_flv_demux_pull_range:<flvdemux0> failed when pulling 12 bytes from offset 72395: unexpected 0:00:00.166074209 10234 0x8739408 WARN flvdemux gstflvparse.c:1121:gst_flv_parse_tag_video:<flvdemux0> failed pushing a 22 bytes video buffer: not-negotiated 0:00:00.166142259 10234 0x8739408 WARN flvdemux gstflvdemux.c:603:gst_flv_demux_loop:<flvdemux0> error: Internal data stream error. 0:00:00.166160128 10234 0x8739408 WARN flvdemux gstflvdemux.c:603:gst_flv_demux_loop:<flvdemux0> error: stream stopped, reason not-negotiated ERROR: from element /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstFLVDemux:flvdemux0: Internal data stream error. Additional debug info: gstflvdemux.c(603): gst_flv_demux_loop (): /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/GstFLVDemux:flvdemux0: stream stopped, reason not-negotiated ERROR: pipeline doesn't want to preroll. Setting pipeline to NULL ... Freeing pipeline ...
the complete file fails to play properly: 1 - codec_data already contains escaped data and we escape it again, making ffmpeg fail to decode the SPS/PPS 2 - after fixing 1, timestamps look completely off 1) is annoying because the escaping code was added because some file did not already escape the codec_data..
1) is fixed now and the file plays at least, although not very good :) commit d3f9ee4309cd3280aab6d773574df89bcd7c9c95 Author: Wim Taymans <wim.taymans@collabora.co.uk> Date: Fri Jan 29 13:58:20 2010 +0100 ffmpegcodecmap: don't escape codec_data Don't escape the codec_data, it breaks some streams (but likely also fixes others). It's better to leave it as is, like most other players do. See #608332
the timestamps are not very accurate but it's mostly gst-ffmpeg who reorders the timestamps and mess things up.
It seems to play fine for me now with 1.0.2, so closing. Please re-open if it's still an issue with a current 1.x release of GStreamer, thanks!