我试图为视频文件创建缩略图:是否可以使AVURLAsset在没有文件扩展名的情况下工作?
- (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;
}
}
美中不足的是,视频文件存储在一个content-addressable store,没有扩展。这似乎抛出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}
难道这证明或其他地方提到?我无法相信我真的被迫通过文件名传递文件格式信息。初始值设定项的options
参数看起来是提供文件类型的好地方,但根据文档,似乎没有任何支持。
PS。我测试了代码,具有正确扩展名的相同文件产生缩略图就好了。
你能告诉我PLZ。你如何创建硬链接到文件,实际上我有一个你管视频的网址,我必须使用它的网址创建该视频的缩略图 – 2012-03-01 12:20:23
你的意思是一个本地文件的URL,或一个普通的HTTP YouTube网址?使用'[NSFileManager linkItemAtURL:toURL:error:]''可以很容易地链接本地文件的URL。从HTTP YouTube视频URL创建缩略图值得[单独的问题](http://stackoverflow.com/questions/ask),恕我直言。 – zoul 2012-03-01 13:04:11
在iOS7和[[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil]中仍然没有修复;'没有扩展名的文件没有问题 – 2013-10-19 19:51:28