1

我的 Http Live Streaming 设置:Apache 托管 html、m3u8 和 ts 文件

ts文件是从 http:devimages.apple.com/iphone/samples/bibbop/gear1/fileSequence*.ts 复制过来的。视频编码没有问题(通过实际播放这些文件验证)

m3u8文件(多比特率和叶级)是从苹果的示例中复制过来的,并且在语法上是正确的,如下所示:

#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10, no desc
fileSequence0.ts
...
#EXTINF:1, no desc
fileSequence180.ts
#EXT-X-ENDLIST

videoplay.html(下)无法从我的 apache 服务器流式传输视频

<video src="bipbop/bipbopall.m3u8" controls autoplay ></video>

但是,在修改 videoplay.html(如下)时,视频流从 Apple 的网站上就可以了

<video src="http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8" controls autoplay ></video>

我怀疑 mime 类型设置有问题,因为 Chrome 处理http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8http://localhost/bipbop/bipbopall.m3u8的方式不同。当 Chrome 尝试播放前者时,它会下载并保存后者。所以我仔细检查了我的 mime 类型设置,它在我的 httpd.conf 中设置如下

AddType application/x-mpegURL .m3u8
AddType video/MP2T .ts
  • 我的 MIME 类型设置是否正确?
  • 我们如何计算苹果网站宣传的 MIME 类型关联?
  • 还是我们必须寻找其他地方来解决这个问题?
4

3 回答 3

3

这可能看起来很奇怪,但我也遇到了类似的问题,经过多次调试,我发现 .m3u8 索引文件中的空行会导致此类问题。请仔细检查索引文件中的空行。

于 2011-06-26T13:19:42.380 回答
1

根据 HLS rfc 文档,您应该使用“application/vnd.apple.mpegurl”或“audio/mpegurl”,但您也可以简单地使路径以 .m3u8 或 .m3u 结尾。

每个播放列表文件必须可以通过其 URI 的路径组件或 HTTP Content-Type 来识别。在第一种情况下,路径必须以 .m3u8 或 .m3u 结尾。第二,HTTP Content-Type 必须是“application/vnd.apple.mpegurl”或“audio/mpegurl”。客户端应该拒绝解析未被识别的播放列表。

~ rfc8216 第 4 章,HTTP Live Streaming

于 2018-02-05T13:59:11.760 回答
0

有点晚了,但为了清楚起见:

File extension |                 MIME type
-------------------------------------------------------------
.M3U8          | application/x-mpegURL (or vnd.apple.mpegURL)
.ts            | video/MP2T

资料来源:Apple Developer Streaming Media Guide – HTTP Streaming Architecture

于 2013-03-29T02:31:45.120 回答