- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 AVAssetImageGenerator
类来生成缩略图,但问题是我需要将该缩略图放入具有 UIImageView
大小的 UITableViewCell
中( 320,239)。我将 AVAssetImageGenerator
最大大小属性指定为 (320,239),但我没有得到我指定的所需大小请提前感谢任何帮助。请查看以下代码以供快速引用。
AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:self.consenteeVideoUrl options:nil];
AVAssetImageGenerator *gen = [[AVAssetImageGenerator alloc] initWithAsset:asset];
gen.maximumSize = CGSizeMake(320, 239);
gen.apertureMode = AVAssetImageGeneratorApertureModeProductionAperture;
gen.appliesPreferredTrackTransform = YES;
CMTime time = CMTimeMakeWithSeconds(0.0, 600);
NSError *error = nil;
CMTime actualTime;
CGImageRef image = [gen copyCGImageAtTime:time actualTime:&actualTime error:&error];
UIImage *thumbnailImage = [[UIImage alloc] initWithCGImage:image];
//thumbnailImage = [CSUtilities imageWithImage:thumbnailImage scaledToSize:CGSizeMake(320, 239)];
CGImageRelease(image);
我从“stackoverflow”获得的另一个解决方案,但对我的场景没有太大帮助。`
AVURLAsset *asset=[[AVURLAsset alloc] initWithURL:self.consenteeVideoUrl options:nil];
AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:asset];
generator.appliesPreferredTrackTransform=TRUE;
CMTime thumbTime = CMTimeMakeWithSeconds(30,30);
AVAssetImageGeneratorCompletionHandler handler = ^(CMTime requestedTime, CGImageRef im, CMTime actualTime, AVAssetImageGeneratorResult result, NSError *error){
if (result != AVAssetImageGeneratorSucceeded) {
NSLog(@"couldn't generate thumbnail, error:%@", error);
}
UIImage *thumbnailImage = [[UIImage alloc] initWithCGImage:im];
//save image to application directory...
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *folderPath = [documentsDirectory stringByAppendingPathComponent:self.uniqueCodeString];
if (![[NSFileManager defaultManager] fileExistsAtPath:folderPath])
[[NSFileManager defaultManager] createDirectoryAtPath:folderPath withIntermediateDirectories:NO attributes:nil error:&error];
NSString *savedImagePath = [folderPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png",self.uniqueCodeString]];
NSData *imageData = UIImagePNGRepresentation(thumbnailImage);
BOOL success = [imageData writeToFile:savedImagePath atomically:YES];
if (success) {
CSLog(@"sucess");
}
partnerEvent.thumbnailImageStr = [self getImagePath];
[self.ibPartnerEventTableView reloadData];
};
CGSize maxSize = CGSizeMake(320, 239);
generator.maximumSize = maxSize;
[generator generateCGImagesAsynchronouslyForTimes:[NSArray arrayWithObject:[NSValue valueWithCMTime:thumbTime]] completionHandler:handler];
最佳答案
您的代码没有任何错误,但正如文档中所述
AVAssetImageGenerator scales images such that they fit within the defined bounding box. Images are never scaled up. The aspect ratio of the scaled image is defined by the apertureMode property.
由于 apertureMode
设置为 AVAssetImageGeneratorApertureModeProductionAperture
生成的图像保持纵横比。如果视频和尺寸集具有相同的宽高比,它只会适合最大尺寸,而指定尺寸不太可能发生这种情况。
尝试将 UIImageView
contentMode
更改为 UIViewContentModeScaleAspectFill
一些内容可能会被裁剪,但您将填满整个 imageView
关于ios - 设置使用 AVAssetImageGenerator ios 生成的缩略图的图像大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23800500/
关于AVAssetImageGenerator的信息似乎很少,关于cancelAllCGImageGeneration的信息则更少,所以我希望这不是一个错误。 我正在调用generateCGImage
我正在使用 AVAssetImageGenerator从视频的最后一帧创建图像。这通常工作正常,但偶尔 copyCGImageAtTime因错误而失败 NSLocalizedDescription =
我正在从可变组合中生成动画 gif,其中我使用 AVVideoCompositionCoreAnimationTool 设置 AVMutableVideoComposition。问题出在核心动画工具上
我正在尝试创建一个视频库。 为了显示视频,我使用了 UICollectionView。每个 UICollectionViewCell 都有一个带有视频缩略图的背景。为了生成视频缩略图,我使用了一种具有
当通过 AVAssetImageGenerator 获取视频的 UIImage 时,当视频以纵向拍摄时,我会返回旋转的图像(嗯,技术上它们不是)。如何判断视频拍摄的方向,然后正确旋转图像? AVURL
我正在使用 AVAssetImageGenerator 从影片剪辑中获取图像,而无需先播放它。现在我有一个问题如何在处理程序的循环中设置变量?是否可以?我收到此错误消息,但不知道这意味着什么。 (谷歌
根据文档,generateCGImagesAsynchronously 接受一个 NSValue 数组,并根据视频和给定时间生成帧,并将其作为回调返回。 我使用以下代码生成值列表 var va
我正在尝试从视频中获取一组图像。它运行良好,但我怀疑完成处理程序是在哪个线程中调用的。 我在新操作中调用了此方法 (generateCGImagesAsynchronouslyForTimes:),并
我不能让 AVAssetImageGenerator 给我电影的所有帧。 使用这段代码: NSString *path = [[NSBundle mainBundle] pathForResource
我正在尝试使用以下代码从视频生成缩略图。它确实生成 UIImages 但图像在不同时间都是相同的。例如,对于持续 3 秒的视频,它会生成 6 张图像,但所有图像都是视频开头的相同图像。对我做错了什么有
在我的应用程序中,我从单个图像创建视频。一切正常,视频以正确的大小和方向正确组装。它们在 Apple 照片应用程序、MPMoviePlayer 和我保存它们的沙箱目录中都正确显示。 当我试图从电影中得
我正在通过 AVAssetImageGenerator 接收远程视频的高/中质量缩略图,但仍然需要 10 到 15 秒才能从中获取缩略图。 有没有办法立即得到低质量的缩略图? 下面是我用来获取远程视频
到目前为止,我有以下内容 let assetUrl = NSURL.URLWithString(self.targetVideoString) let asset: AVAsset = AVA
我已经成功地从视频中提取了所有帧,它对于较小的视频工作正常,但是当我尝试从超过 60 秒的视频中提取帧时,应用程序在设备上崩溃了。 我每秒从视频中提取 30 帧。 以下是我编写的代码:- var v
我尝试从视频中读取一些帧。视频是 640 x 480 但我得到的图像只有 480 x 360。有没有办法得到原始大小的图像? - (void)imagePickerController:(UIImag
我正在尝试从 iPhone 相机捕获的 .mov 文件中获取缩略图。我目前已将电影保存在应用程序的文档部分中。当我调用 [ Assets 持续时间] 时,它返回一个空对象。此外,当我尝试调用 copy
我正在使用 AVAssetImageGenerator 类来生成缩略图,但问题是我需要将该缩略图放入具有 UIImageView 大小的 UITableViewCell 中( 320,239)。我将
我正在使用 AVAssetImageGenerator 为视频播放按钮生成缩略图。当我传递服务器视频 url 以生成图像时,它正在重新调整为 null。 AVAsset *asset = [A
我有一个 AVComposition 和一个 AVVideoComposition,我会为视频的每半秒左右生成一个缩略图。我使用动画工具进行一些叠加。我对操作队列执行调用,它在某些类型的编辑后触发。操
我目前正在使用 AVAssetImageGenerator 从视频中提取每一帧,但有时它会连续两次返回几乎相同的图像(它们没有相同的“帧时间”)。有趣的是它总是每 5 帧发生一次(在我的测试视频中)。
我是一名优秀的程序员,十分优秀!