2011-03-24 95 views
4

我已经m3u8文件与所有的TS文件。 MPMoviePlayerController通过流媒体服务器上的http请求播放它们。但我想在本地获取这些文件,以便以后再次播放它们而不需要任何连接。iPhone MPMoviePlayerController:下载文件,而流媒体本地播放它们

我设法在我的设备上本地下载m3u8文件和所有TS文件,我编辑m3u8文件指向本地.ts而不是http,但是我无法从这个版面读取它们。 (VLC可以做得很好)

有没有一种方法可以在播放时下载片段(避免2次下载),然后用MPMoviePlayerController或其他方式在本地播放它们。

+0

很好的问题 - 据我所知,的MPMoviePlayerController无法从本地URL(文件系统)作为的MPMoviePlayerController的网络部分发挥M3U8流将总是试图谈判“正确的“带宽/从m3u8片段的配置文件 - 这部分似乎并没有在本地工作,并成为showstopper。如果这是正确的(如我所假设的),那么你将不得不在服务器上提供和替代文件 - > MP4。 – Till 2011-03-24 19:49:16

回答

3

.m3u8是Apple HTTP Live Streaming,对吧?我认为你所要做的只是违背该技术的设计。您应该公开原始文件并允许它被下载。

从我所了解的情况来看,在流媒体设计中,您并没有明确地访问这些作品以便将它们放回到一起。例如,Netflix通过Silverlight使用流式传输,其中一个好处(对Netflix来说)就是它可以保护数据免受保存,就好像它被下载一样。此外,由于HTTP Live Streaming允许流在运行中切换比特率,因此它的设计使得每个时间片可以以任意数量的比特率进行编码,而且它们都不是规范的。

理论上,可能有一种方法可以收集特定比特率的所有片并将它们重新编码为单个视频。但苹果的播放API不会给你这样的机会。

而不是HTTP实况流,请考虑渐进式下载。只需提供原始视频文件(如果需要,将其转码为iPhone所喜欢的内容)。如果您的服务器配置正确,则回放API将执行小的请求来获取文件的特定块,而不是一次完成所有的事情,并且这恰好是正确流式传输的第二步。我希望我能找到我读到的地方,所以我可以给它正确的名字。如果您需要快速解决方案,Amazon S3就可以用这种方式进行服务。

但要注意,Apple's docs说,

如果您的应用程序提供的视频超过 蜂窝网络和视频 超过要么持续10分钟或 5 MB的数据在5分钟内, 你需要使用HTTP Live 流媒体。 (渐进式下载可以 用于较小的剪辑。)

+0

谢谢,我注定要下载mp4。这将是2下载,一个完整的mp4文件和其他分段文件取决于客户的愿望 – Vassily 2011-03-25 09:30:05