使用 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:
这里的实际问题不是转换 NSURL
到 NSString
就是我在保存完整的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:保存完整路径不起作用
基本上,我正在将视频文件写入 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:
这里的实际问题不是转换 NSURL
到 NSString
就是我在保存完整的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:保存完整路径不起作用