tsdemux doesn't handle streams without PTS/DTS timestamps, on iOS

Nuno Mota mundumelga at gmail.com
Mon Jul 27 11:02:34 PDT 2015


For enhancement purposes, it could assume video PID as PCR PID, but still
shout a warning log.

"Invalid PCR PID (0x1fff). Trying video PID instead."

2015-07-27 15:04 GMT+01:00 Edward Hervey <bilboed at bilboed.com>:

> Hi,
>
>   No idea why you think there's no PTS in the PES header. There are.
> It's just that the PCR PID reported by the PMT is invalid (0x1fff, the
> PID reserved for NULL/padding packets).
>
>   => The problem is lack of PCR values, not lack of PTS/DTS
>
>   Can you file a bug with all this information here :
> https://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer
>
> On Mon, 2015-07-27 at 11:49 +0200, Dmytro Kabyshev wrote:
> > Hi,
> >
> > I'm trying to make GoPro 4 live preview (mpegts stream) to work with
> > GStreamer and faced with an issue, that tsdemux doesn't push packet
> > further, because it expects PTS/DTS timestamps. On iOS.
> > The problem is, GoPro 4 doesn't set those in PES header. I'm not
> > quite sure why or whether it is correct behaviour for mpeg ts stream
> > broadcaster. But the thing is, I was able to play this stream with
> > ffplay. I dind't go further in comparing ffmpeg mpegts demux with
> > tsdemux. Maybe there's some well know limitation in GStreamer.
> > I would really appriciate any help on this. I'll attach everything I
> > have:
> >
> > 1. gopro.pcap - mpegts UDP steam from GoPro Hero 4 Silver
> > https://www.dropbox.com/s/fskjgnuxx496ako/gopro.pcap?dl=0
> > 2. gopro_stream_conf - mpegst stream config (from ffprobe)
> > https://www.dropbox.com/s/vjrsiapwq4goyqk/gopro_stream_conf?dl=0
> > 3. gopro_gst_log - filtered debug log for tsdemux and mpegtsbase
> > https://www.dropbox.com/s/4e9r5hiziim4sb5/gopro_gst_log?dl=0
> >
> > As for Pipeline, it doesn't really matter, I was testing the
> > simpliest:
> >
> > udpsrc port=8554 buffer-size=5000 ! tsdemux name=demux
> > demux.video_1011 ! queue ! decodebin ! autovideosink demux.video_0200
> > ! fakesink demux.audio_1100 ! fakesink
> >
> > How to simulate GoPro mpegts:
> >
> > 1. Install http://tcpreplay.synfin.net/
> > 2. Download gopro.pcap
> > 3. Get sMAC of source (machine which is going to stream) and
> > destination dMAC (who's going to receive stream). For test purpose it
> > is going to be the same machine (loopback test):
> > > tcprewrite --enet-smac=e4:ce:8f:3c:63:b2 --enet
> > -dmac=e4:ce:8f:3c:63:b2 --infile=gopro.pcap --outfile=output.pcap
> > --enet-smac our sMAC
> > --enet-dmac our dMAC
> >
> > 4. Generate cache:
> > > tcpprep --auto=bridge --pcap=output.pcap --cachefile=input.cache
> >
> > 5. Replays IPs. Again we need sIP (machine which is going to stream)
> > and dIP who's going to receive stream. For test purpose it is going
> > to be the same machine (loopback test):
> > > tcprewrite --endpoints=192.168.14.137:192.168.14.137 -
> > -cachefile=input.cache --infile=output.pcap --outfile=output2.pcap -
> > -skipbroadcast
> > formats for IPs: sIP:dIP
> >
> > 6. Now we have output2.pcap which is ready to playback
> >
> > 7. sudo tcpreplay --intf1=en1 output2.pcap
> > en1 - network interface
> >
> > 8. Finaly. You could verify the stream with: ffplay udp://:8554
> >
> > Regards,
> > Dmytro Kabyshev
> > _______________________________________________
> > gstreamer-devel mailing list
> > gstreamer-devel at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
> --
> Edward Hervey
> bilboed at bilboed.com
>
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20150727/5a5662b0/attachment.html>


More information about the gstreamer-devel mailing list