2011-11-19 36 views
1

我搜索了StackOverflow上所有类似的问题,但没有找到答案来解决我的问题。HTTP Live流媒体iOS不刷新索引.m3u8文件

我想从我的Linux计算机(openSuSE 12.1)将一些电影流到我的iPad。我使用ffmpeg转换它们,使用我自己的分段器对它们进行分段,将它们放在我的apache2服务器的www文件夹中,并放置在.m3u8播放列表中。直到这里 - 一切都好!

我开始播放视频(有标记HTML页面),它起着很好,但只有前五个部分,已经加载了播放列表的第一负载。 HTML页面(浏览器或播放器 - 不知道)不会从服务器刷新(重新下载)播放列表。这里是我的.m3u8播放列表文件看起来像:

#EXTM3U 
#EXT-X-MEDIA-SEQUENCE:19 
#EXT-X-TARGETDURATION:8 

#EXTINF:8, 
http://192.168.1.4/segment_19.ts 
#EXTINF:8, 
http://192.168.1.4/segment_20.ts 
#EXTINF:8, 
http://192.168.1.4/segment_21.ts 
#EXTINF:8, 
http://192.168.1.4/segment_22.ts 
#EXTINF:8, 
http://192.168.1.4/segment_23.ts 

段是在同一个文件夹中的播放列表文件,片段被正确编码(因为我至少可以看到的第一个五年的:d)。我也观看了来自Apache服务器的access_log,我看到了播放列表的第一个加载,然后是所有5个段的后续加载,并停止到那里。它甚至不尝试进一步刷新m3u8文件。

如果它的事项 - 的iOS 5.0,iPad 2的Wi-Fi版而已,没有越狱

想法?我究竟做错了什么?

+0

这只是一个想法,但在请求playlist.m3u8文件时,Expires HTTP标头的价值是什么?用户代理可能缓存它? – joerick

+0

嗨,好主意。我检查了httpd.conf文件,并且所有包含Expire设置。没有。所以我专门设置: ExpireByDefault“现在” 所以现在它应该总是正常结束。 由于您的输入,我决定使用WireShark检查通信。以下是我的观察: 1)首先用部分数据提取我的播放列表;条件是:if-modified-after,这意味着它检查变化; 2)服务器发送文件,因为它已被更改(第一次下载:)) 3)iPad下载所有的ts文件并停止 4)没有更多的查询从iPad ... 想法? –

+0

要排除iPad,请尝试使用支持它的VLC播放器的夜间版本观看HLS。打开消息窗口,查看VLC是否正确重新读取播放列表文件。如果它适用于VLC,那么这与iPad有关。 一些VLC夜魇被破坏,所以你可能想尝试这里的客户端肯定有效 - http://demo.anevia.com:8080/ott/vlc.php – FiddleMeRagged

回答

0

玩家(平台)会自动更新m3u8文件。 不需要http在ios和android中过期设置。 你可以查看httpserver的访问日志。

相关问题