Streaming from dvblast to HLS using gstreamer
I have a dvblast that successfully multicast MPEG2 stream originating from DVB-T to the network and I am trying to compile 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=184.108.40.206 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/
HLS files have been successfully created and successfully uploaded via httpd to mediastreamvalidator who is happy with the results:
Processed 7 out of 7 segments: OK Segment bitrate: Average: 430.90 kbits/sec, Max: 741.38 kbits/sec
MPEG2 license in place and working.
Neither Safari nor iPhone can view this stream, in both cases a play button appears, but no video or audio pays. Ultimately Safari will say "Plugin is missing". I am struggling to figure out where I went wrong and am struggling to find any documentation or examples for this particular scenario. Can anyone point out in which direction this happened?
source to share
Found that the current gst-omx gstreamer code does not handle the included AU delimiters, and the following patch is required in order for omxh264enc to generate a stream that Safari and / or iOS will play:
Using the June 9, 2015 version of mediastreamvalidator shows the following issues, but the stream now works in 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
source to share