访问用 AVPlayer 加载的歌曲
Posted
技术标签:
【中文标题】访问用 AVPlayer 加载的歌曲【英文标题】:Accessing a song loaded with AVPlayer 【发布时间】:2012-05-22 13:48:04 【问题描述】:我想保存一首我用 AVPlayer 的 (id)initWithURL: 方法加载的歌曲,这样下次我想播放它时就不需要加载它了。我花了几个小时浏览 Apple 文档,但没有找到解决方案。
【问题讨论】:
【参考方案1】:如果您有 URL,您可以简单地使用 NSURLConnection
或类似的类将 URL 下载到本地存储。不过,AVPlayer
不会为您执行此操作 - 您必须手动执行此操作。
【讨论】:
【参考方案2】:正如@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 之前对其进行初始化。
【讨论】:
以上是关于访问用 AVPlayer 加载的歌曲的主要内容,如果未能解决你的问题,请参考以下文章