访问用 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 加载的歌曲的主要内容,如果未能解决你的问题,请参考以下文章

停止 AVPlayer 并重新启动 MP3 文件

格式为 m4p 的歌曲在 AVPlayer 中不起作用

iOS 7 使用 AVPlayer 在锁定屏幕上倒带歌曲

如何同时录制使用 AVPlayer 和 wav 文件播放的歌曲?

无法用 iPod 音乐初始化 AVPlayer

如何在具有 AVPlayer 类的应用程序中设置放大音量?