在调试视频时出现黑屏的情况,然后发现是 AVPlayerItemStatusFailed 的,通过打印 item.error 得到 Error Domain=AVFoundationErrorDomain Code=-11850 "操作停止" 的错误提示。
基本上网络上给出的都是 Domain=AVFoundationErrorDomain Code=-11850操作停止如何解决 的解答,通过联系服务商进行了解决,如果自己处理视频的请自行联系服务端人员解决。
然而我这边不一样,我发现是 是 AVPlayerItem 初始化用法不同
[AVPlayerItem playerItemWithAsset:asset];
[[AVPlayerItem alloc] initWithURL:localVideoUrl];
用了前者,发现就是有这个问题,后者没有。
进一步发现是我们项目中,用了AVURLAssetPreferPreciseDurationAndTimingKey这个 key . 这个key对应的value是一个布尔值, 用来表明资源是否需要为时长的精确展示,以及随机时间内容的读取进行提前准备.
然而实际告诉以上不同,都不是。
+ (NSURL *)fileURLWithPath:(NSString *)path;
+ (nullable instancetype)URLWithString:(NSString *)URLString
前者会自动带上 file:// 的前缀的,所以一般我们作如下区别
- 访问的是本地资源,而且不包含协议头,使用fileURLWithPath创建URL
- 使用fileURLWithPath创建URL时,不用担心URL中混有中文的问题,系统会自动实现转换
我这边是引用本地的链接,所以应该是自己用 fileURLWithPath
, 问题到此才找到答案的。
网友评论