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