尝试获取视频缩略图

3

我试图从保存在“文档/”文件夹中的视频中获取视频缩略图,并将其显示在UITableViewCell中的UIImageView中。这是我的获取缩略图的函数:

- (UIImage*) thumbnailImageForVideo:(NSURL *)sourceURL
{
    AVAsset *asset = [AVAsset assetWithURL:sourceURL];
    AVAssetImageGenerator *imageGenerator = [[AVAssetImageGenerator alloc]initWithAsset:asset];
    NSError *err = NULL;
    CMTime time = CMTimeMake(1, 1);
    CGImageRef imageRef = [imageGenerator copyCGImageAtTime:time actualTime:NULL error:&err];
    NSLog(@"err==%@, imageRef==%@", err, imageRef);
    UIImage *thumbnail = [[UIImage alloc] initWithCGImage:imageRef];
    CGImageRelease(imageRef); // CGImageRef won't be released by ARC
    return thumbnail;
}

这是我使用它的地方:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    LibraryCell *libraryCell = [tableView dequeueReusableCellWithIdentifier:@"LibraryCell" forIndexPath:indexPath];

    NSString *videoPath = [NSString stringWithFormat:@"%@/%@", [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"], [libraryFiles objectAtIndex:indexPath.item]];
    libraryCell.itemImage.image = [self thumbnailImageForVideo:[NSURL URLWithString:videoPath]];

    return libraryCell;
}

应用程序没有崩溃,但没有图像。控制台显示如下信息:
2013-04-13 23:44:46.828 GeekOut[14433:907] err==Error Domain=NSURLErrorDomain Code=-1 "unknown error" UserInfo=0x1f0b4610 {NSUnderlyingError=0x1f0b3220 "The operation couldn’t be completed. (OSStatus error -12935.)", NSLocalizedDescription=unknown error}, imageRef==(null)
2013-04-13 23:44:46.859 GeekOut[14433:907] err==Error Domain=NSURLErrorDomain Code=-1 "unknown error" UserInfo=0x1dd8c660 {NSUnderlyingError=0x1dd8c5c0 "The operation couldn’t be completed. (OSStatus error -12935.)", NSLocalizedDescription=unknown error}, imageRef==(null)
2013-04-13 23:44:46.893 GeekOut[14433:907] err==Error Domain=NSURLErrorDomain Code=-1 "unknown error" UserInfo=0x1f0bec80 {NSUnderlyingError=0x1f0be9b0 "The operation couldn’t be completed. (OSStatus error -12935.)", NSLocalizedDescription=unknown error}, imageRef==(null)
1个回答

13
你的缩略图提取代码没问题。问题出在你在 tableView:cellForRowAtIndexPath: 中初始化 NSURL 的方式。
尝试将这部分代码更改为:
[NSURL URLWithString:videoPath]

变成这样:

[NSURL fileURLWithPath:videoPath]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接