【问题标题】:Accessing a song loaded with AVPlayer访问用 AVPlayer 加载的歌曲
【发布时间】:2012-05-22 13:48:04
【问题描述】:

我想保存一首我用 AVPlayer 的 (id)initWithURL: 方法加载的歌曲,这样下次我想播放它时就不需要加载它了。我花了几个小时浏览 Apple 文档,但没有找到解决方案。

【问题讨论】:

    标签: objective-c save nsdata avplayer


    【解决方案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 之前对其进行初始化。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-28
        • 1970-01-01
        相关资源
        最近更新 更多