3

I have dvblast that is successfully multicasting an MPEG2 stream originating from DVB-T onto a network, and I am trying to pick up this multicast MPEG2 stream and convert it to HLS on a Raspberry Pi 2 using gstreamer v1.0 as follows:

gst-launch-1.0 udpsrc port=5004 multicast-group=239.255.1.30 caps="application/x-rtp,media=(string)video,clock-rate=(int)90000" ! rtpbin ! rtpmp2tdepay ! tsdemux ! mpegvideoparse ! omxmpeg2videodec ! queue ! videoconvert ! omxh264enc ! mpegtsmux ! hlssink max-files=5 location=/var/www/stream/segment%05d.ts playlist-location=/var/www/stream/output.m3u8 playlist-root=http://192.168.225.2/stream/

The HLS files are successfully created, and are served via httpd successfully to mediastreamvalidator which is happy with the results:

Processed 7 out of 7 segments:  OK

Segment bitrate: Average: 430.90 kbits/sec, Max: 741.38 kbits/sec

The MPEG2 license is in place and works.

Neither Safari nor an iPhone can view this stream, in both cases the play button appears but no video or audio pays. Eventually Safari will claim "Missing plugin". I am struggling to see where I have gone wrong, and am struggling to find any documentation or examples on this specific scenario. Can anyone point out where in the pipeline this has gone wrong?

Graham Leggett
  • 565
  • 4
  • 13

1 Answers1

1

Discovered that the current gstreamer gst-omx code doesn't handle include AU delimiters, and the following patch is required to make omxh264enc generate a stream that Safari and/or iOS will play:

https://bugzilla.gnome.org/show_bug.cgi?id=736211

Using the June 9 2015 version of mediastreamvalidator shows the following issues, but the stream does now play on Safari and iOS:

WARNING: Video segment does not contain an IDR frame
--> Track ID 1

ERROR: (-12642) Playlist vs segment duration mismatch
--> Segment duration 4.7600, Playlist duration: 2.4000
Graham Leggett
  • 565
  • 4
  • 13