Http Live Streaming 无法在 Apache 上运行

Posted

技术标签:

【中文标题】Http Live Streaming 无法在 Apache 上运行【英文标题】:Http Live Streaming not working on Apache 【发布时间】:2011-09-20 06:54:36 【问题描述】:

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

ts 文件是从 http:devimages.apple.com/iphone/samples/bibpbop/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.m3u8 和 http://localhost/bipbop/bipbopall.m3u8 的方式不同。当 Chrome 尝试播放前者时,它会下载并保存后者。所以我仔细检查了我的 mime 类型设置,它在我的 httpd.conf 中设置如下

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

【问题讨论】:

我有同样的问题,但我无法通过删除索引文件的空行来解决它 看到***.com/questions/11986313/… 【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

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

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

~ rfc8216 第 4 章,HTTP Live Streaming

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于Http Live Streaming 无法在 Apache 上运行的主要内容,如果未能解决你的问题,请参考以下文章

调用Live555接收RTSP直播流,转换为Http Live Streaming(iOS直播)协议

HTTP Live Streaming直播(iOS直播)技术分析与实现

转: HTTP Live Streaming直播(iOS直播)技术分析与实现

如何在 Swift 中为 Radio Live Streaming 服务实现 HLS

如何在 Unix 上实现 HTTP Live Streaming 服务器?

什么是HLS(HTTP Live Streaming)?