我正在尝试为视频文件创建缩略图:
- (UIImage*) thumbnailForVideoAtURL: (NSURL*) videoURL
{
AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:videoURL options:nil];
AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:asset];
CGImageRef imageHandle = [generator copyCGImageAtTime:kCMTimeZero actualTime:NULL error:NULL];
if (imageHandle) {
UIImage *frameImage = [UIImage imageWithCGImage:imageHandle];
CFRelease(imageHandle);
return frameImage;
} else {
return nil;
}
}
Run Code Online (Sandbox Code Playgroud)
问题在于视频文件存储在内容可寻址的商店中,没有扩展名.AVURLAsset
当资产被创建时,这似乎就会消失,但在读取帧图像时,我得到以下错误:
Error Domain=AVFoundationErrorDomain Code=-11828 "Cannot Open" UserInfo=0x167170 {NSLocalizedFailureReason=This media format is not supported., NSUnderlyingError=0x163a00 "The operation couldn’t be completed. (OSStatus error -12847.)", NSLocalizedDescription=Cannot Open}
Run Code Online (Sandbox Code Playgroud)
这是在某处记录或提到的吗?我无法相信我真的被迫通过文件名传递文件格式信息.初始化程序的options
参数AVURLAsset
看起来是提供文件类型的好地方,但根据文档似乎没有任何支持.
PS.我已经测试了代码,具有正确扩展名的相同文件会产生缩略图.
目前,我们使用标准的AVPlayer
viaAVPlayerViewController
来播放视频。我们正在以https://ourdomain/media/mediaid?jwt=authTokenHere格式从 url 流式传输视频。如您所见,该 url 没有扩展名;但是,在有效负载上设置了标头以指示响应是视频。
虽然链接导致视频在桌面 Safari 和 Chrome 中播放良好,但它不会AVPlayer
在我们的应用程序中通过 iOS 播放。是否有一些特定的格式AVPlayer
?