【问题标题】:Incorrect URL for AVURLAssetAVURLAsset 的 URL 不正确
【发布时间】:2015-05-06 23:16:23
【问题描述】:

我正在为 AVURLAsset 的一种方法准备 URL:

+ (AVURLAsset *)URLAssetWithURL:(NSURL *)URL options:(NSDictionary *)options

我的 URL 属于一个文件,该文件写入我的应用程序的文档路径。 NSLog路径的结果是:

/var/mobile/Containers/Data/Application/E0E64E72-9A47-4E62-B9C6-818AB8BF3F4C/Documents/audio.wav

得到NSString *path后,我尝试通过[NSURL URLWithString:path][NSURL fileURLWithPath:path]将NSString转换为NSURL,但URLAssetWithURL都不正确。

URLWithString 的错误是:

Error Domain=AVFoundationErrorDomain Code=-11800 "该操作可能 未完成” UserInfo=0x170269f80 {NSUnderlyingError=0x17405f440 "操作无法完成。(OSStatus 错误 -12780.)", NSLocalizedFailureReason=发生未知错误(-12780), NSLocalizedDescription=操作无法完成}

fileURLWithPath 使应用程序崩溃。

我知道url = [[NSBundle mainBundle] URLForResource:fileURL withExtension:@"wav"] 适合这种情况。但我也想让本地文件的 url 适合 URLAssetWithURL。任何想法?谢谢。

【问题讨论】:

  • fileURLWithPath 是将路径转换为文件 URL 的正确方法。你说它“使应用程序崩溃”。究竟发生了什么?文件 URL 是否正常?您是否确认确实在该位置找到了该文件?
  • @Rob 当它崩溃时,Xcode 只显示一条消息:终止调用抛出异常(lldb)。并且崩溃发生在文件 URL 可以登录控制台之前(相同的代码,除了将 URLWithString 替换为 fileURLWithPath)。如果使用 URLWithString,则文件 URL 为“file:///var/mobile/Containers/.../Documents/audio.wav”。

标签: ios objective-c


【解决方案1】:

这种从文档中获取文件的方式应该可行:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [[paths.firstObject stringByAppendingPathComponent:@"file"] stringByAppendingPathExtension:@"wav"];
if ([[NSFileManager defaultManager] fileExistsAtPath:path]) {
    NSURL *url = [NSURL fileURLWithPath:path];
}

【讨论】:

    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    • 2020-03-11
    • 2016-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多