我的m3u8文件包含所有TS文件。 MPMoviePlayerController通过流媒体服务器上的http请求播放它们。但我想在本地获取这些文件,以便以后再玩它们而不需要任何连接。
我设法在我的设备上本地下载m3u8文件和所有TS文件,我编辑m3u8文件指向本地.ts而不是http。但我无法从这个安置中读取它们。 (VLC可以做得很好)
有没有办法在播放时下载片段(避免2次下载),然后用MPMoviePlayerController在本地播放它们。
答案 0 :(得分:3)
.m3u8是Apple HTTP Live Streaming,对吗?我认为你所做的只是违背了该技术的设计。您应该公开原始文件并允许其下载。
根据我的理解,在流媒体设计中,您无法明确访问这些部分以便将它们重新组合在一起。例如,Netflix通过Silverlight使用流媒体,其中一个好处(对Netflix)是保护数据不被保存,就像下载一样。此外,由于HTTP直播流允许流动地切换比特率,因此它的设计使得每个时间片可以以任意数量的比特率进行编码,而且它们都不是规范的。
理论上,可能有一种方法可以收集特定比特率的所有切片,并将它们重新编码为单个视频。但Apple的播放API不会给你这个机会。
考虑渐进式下载,而不是HTTP直播。只需提供原始视频文件(如有必要,将其转码为iPhone喜欢的内容)。如果您的服务器配置正确,播放API将执行较小的请求以获取文件的特定块,而不是一次性完成所有内容,并且它恰好是正确的流式传输。我希望我能找到我读到的地方,所以我可以给它正确的名称。如果您需要快速解决方案,Amazon S3将设置为以这种方式提供服务。
但要注意,Apple's docs说,
如果您的应用提供了视频 蜂窝网络和视频 持续时间超过10分钟或 五分钟内5 MB的数据, 您需要使用HTTP Live 流。 (逐步下载可能 用于较小的剪辑。)