HLS 流式传输:是否可以从 PHP URL 获取块

HLS streaming: is it possible to get chunks from PHP URL

我需要创建一个 HLS 播放列表,其中应包含 PHP 个 URL 而不是块名称。在我看来,.m3u8 播放列表应该如下所示:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:4
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:11
#EXTINF:10,
http://localhost/hls/get.php?a=1&b=0
#EXTINF:10,
http://localhost/hls/get.php?a=1&b=1
#EXTINF:10,
http://localhost/hls/get.php?a=1&b=2
#EXTINF:10,
http://localhost/hls/get.php?a=1&b=3
#EXTINF:10,
http://localhost/hls/get.php?a=1&b=4
#EXTINF:10,
http://localhost/hls/get.php?a=1&b=5
#EXTINF:10,
http://localhost/hls/get.php?a=1&b=6
#EXTINF:10,
http://localhost/hls/get.php?a=1&b=7
#EXTINF:10,
http://localhost/hls/get.php?a=1&b=8
#EXTINF:10,
http://localhost/hls/get.php?a=1&b=9
#EXT-X-ENDLIST

我有几个问题:
1.有没有可能让它发挥作用?
2. get.php 我应该如何组织文件发送?例如,如果我将读取一个本地文件,然后将其发送给请求者。

任何帮助和信息都会有用。

HLS 的规范是为具有“.ts”扩展名的媒体片段提供服务。所有 HLS 播放器(Apple 和第 3 方播放器)都支持这一点,因此这是确保成功的方法。

Apple 开发页面上对此进行了说明"Deploying HTTP Live Streaming - Configuring a Web Server"
(参见 https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/HTTPStreamingArchitecture/HTTPStreamingArchitecture.html#//apple_ref/doc/uid/TP40008332-CH101-SW13):

分发系统是一个网络服务器或网络缓存系统,通过 HTTP 将媒体文件和索引文件传送到客户端。传送内容不需要自定义服务器模块,通常在 Web 服务器上只需要很少的配置。

推荐的配置通常仅限于指定 .M3U8 文件和 .ts 文件的 MIME 类型关联

特别是在 "HTTP Streaming Architecture" 中(参见 https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/HTTPStreamingArchitecture/HTTPStreamingArchitecture.html#//apple_ref/doc/uid/TP40008332-CH101-SW13 )注意到文件扩展名“.ts”获得 MIME 类型 "video/MP2T"

但要回答您的问题,您至少需要从您的网络服务器上获取您的“.php”文件,其 MIME 类型类似于“.ts”文件(因此 "video/MP2T" ) 否则我确定 Players 会失败。然后你应该使用 Apple Media Stream Validator 检查你的 m3u8 文件和你的 PHP 媒体片段文件来测试以确定它们是否适用于 HLS 客户端(从 developer.apple.com 获取)。如果 Apple Media Stream Validator 说你的流是好的,那么你可能很幸运,因为你采用了不合规范的方法。

那么是什么阻止您使用“.ts”文件?