使用 AVPlayer 播放本地文件时出现问题?

Issues playing local files with AVPlayer?

基本上,我正在将视频文件写入 Application Support 目录,然后保存它的路径:

NSString *guid = [[NSUUID new] UUIDString];
NSString *outputFile = [NSString stringWithFormat:@"video_%@.mp4", guid];
NSString *outputDirectory = [NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *tempPath = [outputDirectory stringByAppendingPathComponent:outputFile];
NSURL *fileURL = [NSURL fileURLWithPath:tempPath]
// code to write a video to fileURL

我通过调用 [fileURL path];

来保存字符串路径本身

现在,当我尝试从中创建一个 AVAssetItem 时,我实际上无法播放它。

编辑:

好的,看来问题出在 Application Support 中的 space。我尝试将文件保存到 Library 目录,但效果很好。

那么问题就变成了,如何播放保存在Application Support目录中的视频。我无法在不转义 space 的情况下创建有效的 NSURL (当我尝试它时 return 为零 NSURL)但似乎 space/escaping 不允许它正确播放。

假设需要 NSURL 到 NSString 的转换(除非 真的 应该避免)。

另外,旁注,但如果有人能就为什么这个问题被否决提供一些见解,以便我可以提高我的问题的质量,那将不胜感激。我不明白?

虽然我没有足够的信息来判断如果我使用 matt 推荐的方法这是否会改变:URLForDirectory:inDomain:appropriateForURL:create:error:URLByAppendingPathComponent: 这里的实际问题不是转换 NSURLNSString

就是我在保存完整的URL ([fileURL path])。这是因为 [NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 会动态变化,完整路径不会总是指向适当的文件。

相反,我只需要保存我的文件名(在我的情况下,我需要坚持 outputFile),然后在需要时动态构建完整路径。

完全相同的过程:

NSString *outputDirectory = [NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *tempPath = [outputDirectory stringByAppendingPathComponent:outputFile];
NSURL *fileURL = [NSURL fileURLWithPath:tempPath];

工作得很好。

TLDR:保存完整路径不起作用