<html><head><style>body{font-family:Helvetica,Arial;font-size:13px}</style></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><pre class="bz_comment_text" id="comment_text_0" style="font-size: small; white-space: pre-wrap; width: 50em; widows: 1;">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</pre><pre class="bz_comment_text" id="comment_text_0" style="font-size: small; white-space: pre-wrap; width: 50em; widows: 1;"><a href="https://www.dropbox.com/s/fskjgnuxx496ako/gopro.pcap?dl=0">https://www.dropbox.com/s/fskjgnuxx496ako/gopro.pcap?dl=0</a>
2. gopro_stream_conf - mpegst stream config (from ffprobe)
<a href="https://www.dropbox.com/s/vjrsiapwq4goyqk/gopro_stream_conf?dl=0" style="color: rgb(102, 51, 102);">https://www.dropbox.com/s/vjrsiapwq4goyqk/gopro_stream_conf?dl=0</a>
3. gopro_gst_log - filtered debug log for tsdemux and mpegtsbase
<a href="https://www.dropbox.com/s/4e9r5hiziim4sb5/gopro_gst_log?dl=0" style="color: rgb(102, 51, 102);">https://www.dropbox.com/s/4e9r5hiziim4sb5/gopro_gst_log?dl=0</a>

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 <a href="http://tcpreplay.synfin.net/" style="color: rgb(102, 51, 102);">http://tcpreplay.synfin.net/</a>
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):
<span class="quote" style="color: rgb(101, 55, 156); white-space: pre;">> tcprewrite --enet-smac=e4:ce:8f:3c:63:b2 --enet-dmac=e4:ce:8f:3c:63:b2 --infile=gopro.pcap --outfile=output.pcap</span>
--enet-smac our sMAC
--enet-dmac our dMAC

4. Generate cache:
<span class="quote" style="color: rgb(101, 55, 156); white-space: pre;">> tcpprep --auto=bridge --pcap=output.pcap --cachefile=input.cache</span>

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):
<span class="quote" style="color: rgb(101, 55, 156); white-space: pre;">> tcprewrite --endpoints=192.168.14.137:192.168.14.137 --cachefile=input.cache --infile=output.pcap --outfile=output2.pcap --skipbroadcast</span>
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</pre></div><br><div id="bloop_sign_1437990431413494016" class="bloop_sign"><div style="font-family:helvetica,arial;font-size:13px">Regards, <br>Dmytro Kabyshev<br></div></div></body></html>