我有以下代码用于从服务器获取视频并播放它:
- (voID)openVIDeo { Nsstring *vIDeoURLString = @"http://myite.com/dev/iphone/uploads/t69566.mov"; NSURL *vIDeoURL = [NSURL URLWithString:vIDeoURLString]; MPMovIEPlayerVIEwController *movIEPlayerVIEw = [[[MPMovIEPlayerVIEwController alloc] initWithContentURL:vIDeoURL] autorelease]; [self presentMovIEPlayerVIEwControllerAnimated:movIEPlayerVIEw];}
现在很粗糙,我很想让openVIDeo与视频帖子一起动态,但我仍然坚持使用这个视频并抓取一个框架或缩略图并显示它.
建议?想法?
更新:
我想从服务器拍摄的视频中获取缩略图.这实际上给我带来了一个问题.
当用户首次上传视频时,最好只在那里创建一个缩略图并将其上传到我的服务器,并将其与视频相关联,抓住它们以填充新闻Feed类型?
解决方法 您可以使用AVAssetimageGenerator完成此 *** 作.粗糙的代码,从工作项目中复制和粘贴(但可能没有被正确隔离):> _thumbnailVIEw是一个显示缩略图的UIImageVIEw.
> _activityVIEw是一个UIActivityIndicatorVIEw,在缩略图完成加载时会被隐藏.
AVPlayerItem *playerItem = [[AVPlayerItem playerItemWithURL:movIEURL] retain];AVAssetimageGenerator *_generator;_generator = [[AVAssetimageGenerator assetimageGeneratorWithAsset:playerItem.asset] retain];[playerItem release];AVAssetimageGeneratorCompletionHandler handler = ^(CMTime requestedTime,CGImageRef image,CMTime actualTime,AVAssetimageGeneratorResult result,NSError *error) { if (result == AVAssetimageGeneratorSucceeded) { UIImage *thumb = [UIImage imageWithCGImage:image]; [_thumbnailVIEw setimage:thumb forState:UIControlStatenormal]; } else { DLog(@"%s - error: %@",__PRETTY_FUNCTION__,error); } dispatch_async(dispatch_get_main_queue(),^{ _thumbnailVIEw.hIDden = NO; _playbutton.hIDden = NO; [_activityVIEw stopAnimating]; });};[_generator generateCGImagesAsynchronouslyForTimes:[NSArray arrayWithObject:[NSValue valueWithCMTime:CMTimeMakeWithSeconds(30,30)]] completionHandler:handler];
回到你的问题,在我看来,服务器端生成的缩略图通常更好,因为服务器具有更强的处理能力.此外,为了获得此缩略图,您需要开始从服务器下载实际视频.
最后,不是你传递CMTime参数,包括对CMTimeMakeWithSeconds()的调用.这可能会有问题,因为您可以轻松打出空白帧.这就是我们使用30作为参数的原因,因此我们在视频中避免这种情况.
总结以上是内存溢出为你收集整理的ios – 从视频中检索缩略图 – 目标C.全部内容,希望文章能够帮你解决ios – 从视频中检索缩略图 – 目标C.所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)