GNOME Bugzilla – Bug 338676
play MPEG TS without PAT/PMT
Last modified: 2013-09-09 01:26:20 UTC
When I create a pipeline like: gst-launch-0.10 filesrc location=/tmp/ts ! ffdemux_mpegts where /tmp/ts is a stream capture from /dev/dvb/adapter0/dvr0, i get: Setting pipeline to PAUSED ... Pipeline is PREROLLED ... Setting pipeline to PLAYING ... ERROR: from element /pipeline0/ffdemux_mpegts0: GStreamer encountered a general supporting library error. Additional debug info: gstffmpegdemux.c(1050): gst_ffmpegdemux_open (): /pipeline0/ffdemux_mpegts0: Unknown error Execution ended after 530000 ns. Setting pipeline to PAUSED ... Setting pipeline to READY ... Setting pipeline to NULL ... FREEING pipeline ... If I try to directly access the the /dev/dvb/adapter0/dvr0 device, it fails as due to only supporting the pull mode: gst-launch-0.10 filesrc location=/dev/dvb/adapter0/dvr0 ! ffdemux_mpegts name=d Setting pipeline to PAUSED ... ERROR: Pipeline doesn't want to pause. ERROR: from element /pipeline0/d: Element doesn't implement handling of this stream. Please file a bug. Additional debug info: gstffmpegdemux.c(1274): gst_ffmpegdemux_sink_activate (): /pipeline0/d: failed to activate sinkpad in pull mode, push mode not implemented yet Setting pipeline to NULL ... FREEING pipeline ...
the ffmpeg demuxers do not yet support push based scheduling.
Fair enough, but doesn't filesrc support pull based scheduling? ie, what is a working pipeline for this element?
something like gst-launch-0.10 filesrc location=/tmp/ts ! ffdemux_mpegts should work fine. Don't know why the first pipeline does not work for you. filesrc from a non seekable file /dev/dvb/adapter0/dvr0 will not work pull based. If you can attach a sample captured ts file that fails to work, I can take a look at it.
The dump is available here: http://hpc-external.jcu.edu.au/~nigel/dvr-capture It is about 10MB large, so be careful, but being a TS stream, perhaps you can just grab the first few megabytes.
This file does not contain any PAT or PMT, ffmpeg cannot demux these streams AFAIK.
changing subject. Marking as enhancement.
http://hpc-external.jcu.edu.au/~nigel/dvr-capture doesn't exist anymore Any other capture / source somewhere ?
ffmpeg's mpegts demuxer can play mpegts streams without PAT/PMT since a few years. mpegtsdemux can\t though. see bug 523866 Samples can be generated from /dev/dvb/adapter0/dvr0 by using ?zap -r without -p. I can upload a sample if anyone still wants one.
This bug also applies to the tsdemux element as it doesn't support stream without pat/pmt neither. It would be better if someone could upload here a sample file with no pat/pmt (I do not have any). Moving the bug to gst-plugins-bad as this is where both mpegtsdemux and tsdemux are (not gst-ffmpeg).
Created attachment 210183 [details] Short dump from dvr0 without PAT/PMT
This might be a stupid question ... but how is one expected to play a ts file without PAT/PMT ? Is there some implied streams when none are present ?
fwiw ... vlc can't play that file either
So this seems like NOTABUG to me then. Please reopen if this is not the case.
Well, I'm not sure how compliant it is, but ffmpeg does indeed support streams without PMT. It just creates the streams is it go through packets, using codec probe to determine stream type.