我正在开发视频应用,因为我需要视频封面图片,我可以从用户那里选择,
从用户中选择封面图片,如下面的图片
我在谷歌搜索多次自定义控制器,但我没有得到任何结果,如果有任何自定义控制器?或任何建议,这对我很有帮助
答案 0 :(得分:1)
您可以使用Bellow代码使用视频文件的路径获取Video Thumb封面图像,或者您可以获取视频文件的所有帧。但Apple没有提供任何视图控制器来选择封面图像Thumb for video。您必须在thumbnailImageAtTime
创建手动时间或创建您自己的视图类型并使用Bellow代码获取拇指图像。希望有用。
-(void) getAllImagesFromVideo
{
imagesArray = [[NSMutableArray alloc] initWithCapacity:375];
times = [[NSMutableArray alloc] initWithCapacity:375];
for (Float64 i = 0; i < 15; i += 0.033) // For 25 fps in 15 sec of Video
{
[times addObject:[NSValue valueWithCMTime:CMTimeMakeWithSeconds(i, 60)]];
}
[imageGenerator generateCGImagesAsynchronouslyForTimes:times completionHandler:^(CMTime requestedTime, CGImageRef image, CMTime actualTime, AVAssetImageGeneratorResult result, NSError *error) {
if (result == AVAssetImageGeneratorSucceeded)
{
[imagesArray addObject:[UIImage imageWithCGImage:image]];
CGImageRelease(image);
}
}];
}
以上代码参考来自Get all frames of Video IOS 6这里有你视频的所有帧图像。所以创建你自己的view-Controller
就像你提到你的问题一样创建view-controller
如上所述并将所有图像设置为水平scroll-view
并为你的封面图片选择任何一个,否则你可以得到特定的图像从时间上定向使用Bellow码。
-(UIImage *)getThumbNail:(NSString*)stringPath
{
NSURL *videoURL = [NSURL fileURLWithPath:stringPath];
MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];
UIImage *thumbnail = [player thumbnailImageAtTime:1.0 timeOption:MPMovieTimeOptionNearestKeyFrame];
//Player autoplays audio on init
[player stop];
return thumbnail;
}