我正在将音频数据保存到Documents目录并尝试将其读回 . 如果我立即播放它会成功播放,但是,如果我开始一个新的会话并尝试在本地播放歌曲,即使列出文件目录中的文件显示我的文件仍然存在,它也会失败 . 请注意,如果立即播放或在新会话期间播放文件,则以相同方式(相同代码)播放文档文件夹 .
以下是我将音频数据保存到Documents目录的方法:
+(void)writeDataToAudioFile:(NSData*)data forTrack:(MediaItem*)track
{
// filename looks like "[track_id].mp3"
NSString *fileName = [NSString stringWithFormat:@"%@.%@",track.sc_id,track.original_format];
NSString *pathName = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask,
YES) firstObject]
stringByAppendingPathComponent:fileName];
[[NSFileManager defaultManager] createFileAtPath:pathName
contents:data
attributes:nil];
}
然后在我的音乐播放器中,我想将本地URL加载到此文件以初始化AVPlayer:
NSURL *url;
if(_currentTrack.is_local_item)
{
url = [NSURL fileURLWithPath:_currentTrack.local_file_path];
}
由于AVPlayer无法播放,因此无法正确创建网址 . 此外,我尝试了每种不同的方式将文件作为数据加载到NSData对象中以检查字节大小,但尝试访问该文件,因为数据始终返回nil . 但是,该文件存在就好像我使用NSFileManager我能够迭代Documents目录中的项目并打印它们的文件名/路径,验证我在“_currentTrack.local_file_path”中保存的路径确实存在 . 同样,如果我在将文件保存到磁盘后立即播放文件,它将播放 .
如果我能提供更多信息,我会更清楚 . 非常感谢你 .