缓存在MPMoviePlayerController中逐行下载的内容 [英] Cache Progressive downloaded content in MPMoviePlayerController

查看:144
本文介绍了缓存在MPMoviePlayerController中逐行下载的内容的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个在iphone(sdk 4)中实现的音乐播放器,它既适用于流式传输Mp3(即时转码)或原始渐进式下载。

I have a music player implemented in iphone (sdk 4) and it works both with streaming of Mp3 (Transcoded on the fly) or raw progressive download.

是无论如何要将渐进式下载内容(我不直接控制)缓存,以便不重新下载整个内容?

Is there anyway to make the progressivedownloaded content (which I dont directly control) to be cached so it doesn redownload the whole content?

或是否有全局缓存设置可以控制? (另一方面,我使用ASIHTTP API联系我的HTTP服务器并访问允许缓存的数据。)

Or Is there a global cache setting to control? (On a side note, I used ASIHTTP APIs to contact my HTTP server and access data that does allow caching).

提前致谢。

推荐答案

您可以使用NSURLConnection保存文件并进行播放。

You can use NSURLConnection to save the file and play it back.

示例:

-(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中逐行下载的内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆