0

I want to save a song that I loaded with method - (id)initWithURL: of AVPlayer, so I don't need to load it next time I want to play it. I've spent hours browsing Apple documentation, but haven't found a solution.

4

2 回答 2

0

如果您有 URL,则可以简单地使用其中一个NSURLConnection或类似的类将 URL 下载到本地存储。AVPlayer但是,不会为您执行此操作 - 您必须手动执行此操作。

于 2012-05-22T17:23:16.780 回答
0

正如@iKenndac 所说,你不能从 AVPlayer 中得到这个。您可以自己下载文件并将其存储到磁盘,但您将失去 AVPlayer 在下载歌曲和开始播放歌曲方面提供的所有优化。当然,下次您播放歌曲时,您将获得已将歌曲保存在磁盘上的好处。如果这种权衡对你来说很好,那么在你的 NSURLConnection 回调中会做这样的事情:

- (void)connection:(NSURLConnection *)connection
    didReceiveData:(NSData *)data 
{
    [responseData appendData:data];
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSFileHandle *myHandle = [NSFileHandle fileHandleForUpdatingAtPath:someFilePath];
    [myHandle writeData:responseData];
    [myHandle synchronizeFile];
    [myHandle closeFile];           
}

您必须将 responseData 定义为 NSMutableData 对象,并确保在调用 appendData 之前对其进行初始化。

于 2012-05-22T17:50:26.460 回答