在 MPMoviePlayerController 中缓存渐进式下载内容
Posted
技术标签:
【中文标题】在 MPMoviePlayerController 中缓存渐进式下载内容【英文标题】:Cache Progressive downloaded content in MPMoviePlayerController 【发布时间】:2010-07-26 19:25:16 【问题描述】:我有一个在 iphone (sdk 4) 中实现的音乐播放器,它既适用于 Mp3 流(动态转码),也适用于原始渐进式下载。
有没有办法让渐进式下载内容(我不直接控制)被缓存,这样它就不会重新下载整个内容?
或者是否有全局缓存设置来控制? (顺便说一句,我使用 ASIHTTP API 联系我的 HTTP 服务器并访问允许缓存的数据)。
提前致谢。
【问题讨论】:
【参考方案1】:您可以使用 NSURLConnection 保存文件并播放。
例子:
-(void)downloadFileAtPath:(NSString *)path
NSURL *url = [NSURL URLWithString:path];
NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url];
NSURLConnection* connection = [[NSURLConnection alloc] initWithRequest:req delegate:self];
[connection start];
-(void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse*)response
//NSLog(@"%s", __PRETTY_FUNCTION__);
[[NSFileManager defaultManager] createFileAtPath:pathForCurrentFile contents:nil attributes:nil];
currentFile = [NSFileHandle fileHandleForUpdatingAtPath:pathForCurrentFile];
if (currentFile)
[currentFile seekToEndOfFile];
-(void)connection:(NSURLConnection*)connection didReceiveData:(NSData*)data
//NSLog(@"%s", __PRETTY_FUNCTION__);
if( currentFile != nil)
if (currentFile)
[currentFile seekToEndOfFile];
[currentFile writeData:data];
-(void)connection:(NSURLConnection*)connection didFailWithError:(NSError*)error
NSLog(@"%s, %@", __PRETTY_FUNCTION__, error);
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
[currentFile closeFile];
下面是播放代码
//Playback
NSString *loopFilePath = [[self applicationDocumentsDirectory].path stringByAppendingPathComponent:vidFileName];
NSURL *vidURL = [NSURL fileURLWithPath:vidFilePath];
self.vidController = [[MPMoviePlayerController alloc] initWithContentURL:vidURL];
self.vidController.view.frame = CGRectMake(0, 0, 640, 480);
self.vidController.controlStyle = MPMovieControlStyleDefault;
[self.view addSubview:self.vidController.view];
[self.vidController prepareToPlay];
[self.vidController play];
【讨论】:
您好,您的解决方案成功了吗?以上是关于在 MPMoviePlayerController 中缓存渐进式下载内容的主要内容,如果未能解决你的问题,请参考以下文章
如何在 MPMoviePlayerController 上处理多个 SRT 文件
在 MPMoviePlayerController 上执行捏合手势时屏幕黑屏
在 UITableViewCell 中嵌入 MPMoviePlayerController
MPMoviePlayerController 在影片结尾更改控件样式