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