使用gstreamer从dvblast到HLS的流式传输

使用gstreamer从dvblast到HLS的流式传输,gstreamer,http-live-streaming,mpeg-2,Gstreamer,Http Live Streaming,Mpeg 2,我有一个dvblast,它成功地将源自DVB-T的MPEG2流多播到网络上,我正在尝试拾取该多播MPEG2流,并使用gstreamer v1.0将其转换为Raspberry Pi 2上的HLS,如下所示: 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 ! rtpmp2td

我有一个dvblast,它成功地将源自DVB-T的MPEG2流多播到网络上,我正在尝试拾取该多播MPEG2流,并使用gstreamer v1.0将其转换为Raspberry Pi 2上的HLS,如下所示:

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/
HLS文件已成功创建,并通过httpd成功送达mediastreamvalidator,mediastreamvalidator对结果满意:

Processed 7 out of 7 segments:  OK

Segment bitrate: Average: 430.90 kbits/sec, Max: 741.38 kbits/sec
MPEG2许可证已到位并有效


Safari和iPhone都无法查看此流,在这两种情况下,播放按钮都会出现,但视频或音频都不收费。最终Safari将声明“缺少插件”。我很难看出我哪里出了错,也很难找到关于这个特定场景的任何文档或示例。有人能指出管道中哪里出了问题吗?

发现当前的gstreamer gst omx代码不处理包含AU分隔符的数据流,需要以下补丁才能使omxh264enc生成Safari和/或iOS将播放的数据流:

使用2015年6月9日版本的mediastreamvalidator会出现以下问题,但该流现在可以在Safari和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

它在VLC这样的玩家身上有效吗?你解决问题了吗?!