[Bug 752843] New: tsdemux doesn't handle streams without PTS/DTS timestamps, on iOS
GStreamer (GNOME Bugzilla)
bugzilla at gnome.org
Fri Jul 24 14:32:35 PDT 2015
https://bugzilla.gnome.org/show_bug.cgi?id=752843
Bug ID: 752843
Summary: tsdemux doesn't handle streams without PTS/DTS
timestamps, on iOS
Classification: Platform
Product: GStreamer
Version: 1.5.2
OS: Mac OS
Status: NEW
Severity: critical
Priority: Normal
Component: gst-plugins-bad
Assignee: gstreamer-bugs at lists.freedesktop.org
Reporter: dkabyshev at gmail.com
QA Contact: gstreamer-bugs at lists.freedesktop.org
GNOME version: ---
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
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
--
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
More information about the gstreamer-bugs
mailing list