我正在写一个应用程序,其中的一部分允许用户流/播放视频。我想限制功能,以便他们只有在有WiFi连接的情况下才能播放视频。然后,我会保存视频,以便当他们只有3G(或更少)连接时,他们不能流式传输视频,并且只能播放保存在手机上的视频。同时流式传输并保存视频?
理想情况下,我想让MPMoviePlayerController流/播放电影,然后访问电影数据并保存它。但是,MPMoviePlayerController api似乎不支持对电影数据的访问。
我想避免和下载然后播放场景。有任何想法吗?
我正在写一个应用程序,其中的一部分允许用户流/播放视频。我想限制功能,以便他们只有在有WiFi连接的情况下才能播放视频。然后,我会保存视频,以便当他们只有3G(或更少)连接时,他们不能流式传输视频,并且只能播放保存在手机上的视频。同时流式传输并保存视频?
理想情况下,我想让MPMoviePlayerController流/播放电影,然后访问电影数据并保存它。但是,MPMoviePlayerController api似乎不支持对电影数据的访问。
我想避免和下载然后播放场景。有任何想法吗?
想到两种解决方案。 这两种解决方案都要求文件的格式可以逐行播放,例如,你不需要整个文件就可以播放它(但是无论如何这将是一个先决条件)。
到目前为止,我所看到的人们这样做不起作用,因为MPMoviePlayerController无法处理EOF事件。 (未经我自己测试)[Caching videos to disk after successful preload by MPMoviePlayerController
我离开这个答案作为一个维基,因为我没有一个工作解决方案,但我也想要一个。
有人试过这个吗?你有成功吗? – calimarkus 2012-08-29 21:01:56
iPhone正在使用渐进式下载,因此它不会保存在设备上。为此,您需要明确下载它,然后从本地文件夹播放视频。
有一种方法可以完成这项工作,但您必须编写自己的HTTP Live Streaming下载程序。
基本上,你解析的.m3u8文件(这是一个非常简单的标准,但可以变得棘手的备用流和流的可能性会简单地退出,需要一个新的播放列表继续),然后下载块.ts格式到您的本地存储,比如文档文件夹或Caches等。
然后,您必须设置本地HTTP服务器,以允许MPMoviePlayerController或AVPlayer通过HTTP访问文件(因为它们不会触摸本地文件路径),包括指向本地文件的重新编码的播放列表文件,您必须从原始播放列表创建自己的文件。 CocoaHTTPServer对此非常有用。
一旦你完成了所有的工作,它会很好。在将本地HTTP URL呈现给电影播放器之前,在下载第一个或第二个块之前,您不可避免地会出现一些延迟,但在此之后,您将无缝下载,录制和预览播放。
祝你好运!
嗨,你有成功吗? – Bkillnest 2016-03-15 02:23:06