我目前正在做一个网络应用,其主要目的是流媒体时移电视频道。应用程序是用Javascript React框架编写的,对于网络播放器,我们使用的是 CookPete ReactPlayer 与集成的hls.js。我们已经成功地播放了直播电视频道,但不幸的是,我们遇到了一些关于频道时移的问题。
直播流分布在 XtreamUI 所以当用户在观看电视直播时,这种URL会进入播放器源,CookPete播放器+hls.js会对m3u8列表进行解析处理,从而完美播放视频。
问题来了,XtreamUI使用的是这种URL example.orgstreamingtimeshift.php?username=XXX&password=XXX&stream=2&start=2020-04-26:19-23&duration=7。正如你所看到的,它的PHP脚本将原始字节传输到播放器中。 下面是streamtimeshift.php的响应头文件。
正如你所注意到的,内容类型是videomp2t,由于某些原因不能在浏览器环境中播放。 ( Google Chrome, Mozilla Firefox, IE 11)。这个警告会弹出。
另一方面,Safari浏览器在Mac上的视频播放完全正常,但从Safari的请求是有点不同。这是Safari的控制台网络标签的截图。正如你所看到的,有几个不同字节范围的请求。
我们正在寻求一个解决方案,它将提供播放时移视频(videomp2t内容)在谷歌浏览器,火狐和IE 11。欢迎所有的建议和意见。
内容类型是videomp2t,由于某些原因不能在浏览器环境下播放。
这是因为chrome和Firefox不支持mpeg传输流,而safari支持。hls.js之所以能够工作,是因为它知道如何读取二进制ts文件,并在发送到媒体源扩展缓冲区之前将其重写为mp4片段。你也需要做同样的事情。看看mux.js。
在Firefox中,通过运行这个命令安装一个编解码器。
sudo apt-get install libavcodec58
在chrome中也安装一个类似的编解码器。它应该可以解决这个问题。