从视频生成缩略图 - ios7

2024-06-19

我用这个作为参考:从视频 URL 或 iPhone SDK 中的数据获取缩略图 https://stackoverflow.com/a/6027285/1145339

该方法使用 MPMoviePlayerController 类而不是 AVFoundation,我想我也想使用它,因为人们说 MPMoviePlayer 方式比 AVFoundation 方式更快。

问题是,用于创建缩略图的方法,[player thumbnailImageAtTime:1.0 timeOption:MPMovieTimeOptionNearestKeyFrame]在 iOS 7.0 中已弃用。

通过查看苹果文档,创建缩略图的其余支持方法是通过以下方法(void)requestThumbnailImagesAtTimes:(NSArray *)playbackTimes timeOption:(MPMovieTimeOption)option and (void)cancelAllThumbnailImageRequests。但是,正如方法签名所规定的那样,这些方法不返回任何内容。那么我如何访问UIImage通过这些方法创建的缩略图?

如果有帮助,这就是我到目前为止的代码:

    self.videoURL = info[UIImagePickerControllerMediaURL];
    NSData *videoData = [NSData dataWithContentsOfURL:self.videoURL];

    //Create thumbnail image
    MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:self.videoURL];
    [player requestThumbnailImagesAtTimes:@[@1] timeOption:MPMovieTimeOptionNearestKeyFrame];
   //UIImage *thumbnail = ???

如何获取缩略图的 UIImage 引用?

EDIT我想出了如何为缩略图请求创建通知(使用这个问题 https://stackoverflow.com/questions/14297726/cant-get-multiple-images-from-video-using-mpmovieplayercontroller-osstatus-12作为参考)。但是,我意识到该方法与主线程异步工作,因此我的通知处理程序方法似乎从未被调用。

这就是我现在所拥有的。

    self.videoURL = info[UIImagePickerControllerMediaURL];
    NSData *videoData = [NSData dataWithContentsOfURL:self.videoURL];
    MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:self.videoURL];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleThumbnailImageRequestFinishNotification:) name:MPMoviePlayerThumbnailImageRequestDidFinishNotification object:player];
    [player requestThumbnailImagesAtTimes:@[@1] timeOption:MPMovieTimeOptionNearestKeyFrame];

然后是我的处理程序方法:

-(void)handleThumbnailImageRequestFinishNotification:(NSNotification*)notification
{
    NSDictionary *userinfo = [notification userInfo];
    NSError* value = [userinfo objectForKey:MPMoviePlayerThumbnailErrorKey];
if (value != nil)
{
    NSLog(@"Error creating video thumbnail image. Details: %@", [value debugDescription]);
}
else
{
    UIImage *thumbnail = [userinfo valueForKey:MPMoviePlayerThumbnailImageKey];
}

但处理程序永远不会被调用(或者看起来是这样)。


试试这个方法。

import AVFoundation framework 

in *.h

#import <AVFoundation/AVFoundation.h>

in *.m

AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:self.urlForConevW options:nil];
AVAssetImageGenerator *generateImg = [[AVAssetImageGenerator alloc] initWithAsset:asset];
NSError *error = NULL;
CMTime time = CMTimeMake(1, 65);
CGImageRef refImg = [generateImg copyCGImageAtTime:time actualTime:NULL error:&error];
NSLog(@"error==%@, Refimage==%@", error, refImg);

UIImage *FrameImage= [[UIImage alloc] initWithCGImage:refImg];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从视频生成缩略图 - ios7 的相关文章

  • @objc 协议使 swift 编译器崩溃

    我写了我的协议 旨在有一些 optional方法 但 swift 编译器崩溃了 这有效 protocol SessionDelegate TODO these should all be optional func willOpenSess
  • 升级到iOS9后登录流程失败

    将我的应用程序升级到 iOS9 后 我的应用程序中出现错误 内容如下 objc 344 无法形成对 LoginVC 类的实例 0x15919e00 的弱引用 该对象可能被过度释放 或者正在释放过程中 下面是我收到此错误的函数 void di
  • 使用 NSDataDetector 进行 NSDate 检测

    我尝试从 NSString 获取 NSDateUNKNOWN格式 所以我写了一个如下所示的函数 void dateFromString NSString string NSError error NULL NSDataDetector de
  • AutoLayout 和 UILabel 调整动画大小在设备旋转时无法正常工作

    我在一项非常简单的任务上遇到了一个奇怪的问题 我需要一个非常小的设置来重现该问题 Parent View UILabel
  • 将 NSString 分成行(以适合所需的宽度)

    我正在尝试将 NSString 分成几行以适合所需的宽度 因为它会发生在内部 sizeWithFont constrainedToSize 有没有比猜测中断发生在哪里更好的方法呢 sizeWithFont If NSLayoutManage
  • 将 NSDate 转换为 NSString

    我如何转换 NSDate to NSString所以只有这一年 yyyy 格式是输出到字符串吗 怎么样 NSDateFormatter formatter NSDateFormatter alloc init formatter setDa
  • 如何使用 RegexKitLite 转义 NSString 中的特殊字符?

    我正在构建一个使用用户输入的字符串的正则表达式 但该字符串可能包含特殊字符 例如 或 我希望将它们视为文字 而不是通过正则表达式中的特殊含义进行解释 我试过这个 NSString word input stringByReplacingOc
  • 应用程序在后台时如何处理 iOS 远程通知

    我正在通过苹果推送通知开发iOS推送通知功能 现在当我的应用程序处于后台或前台时我收到了正确的通知 但我想当我的应用程序处于后台时基本上当我的应用程序处于后台时处理远程通知只是显示来自有效负载的警报消息 实际上我只是想自定义我的远程通知 c
  • 如果 [super init] 返回 nil 为什么不抛出异常?

    这被认为是典型的 id init self super init if self lt initializations gt return self 但选择这样的实际上能做出适当响应的东西不是更好吗 id init self super i
  • 如何使用Google Chrome缩略图预览服务?

    有人知道如何使用 google chrome 服务来生成网站缩略图 新标签上浏览次数最多的网站 有想法做类似的事情吗 These 浏览 chrome 源代码我找不到任何有趣的东西 你呢 来源在这里 http src chromium org
  • 如何使我的 Objective-C 类符合 Swift 的“Equatable”协议?

    我有一个 Objective C 类 恰好是一个按钮 但这并不重要 在我的 混合语言 项目的另一部分 我有一个这些按钮的数组 我想获取索引使用按钮的find 方法 就像这样 func doSomethingWithThisButtonInd
  • iPhone开发中如何制作画线动画?

    我一直在四处寻找 但对于这个简单的问题似乎没有好的答案 所以我再次问 如何在 iphone dev 中制作线条画动画 基本上我想要的是这样的 implementation MyUIView void triggerLineDrawing C
  • 如何消除错误 服务无效 请检查您的设置并尝试

    我一直在努力工作 一切都很顺利 只是突然间 当我尝试构建我的项目时 我在 xCode 中收到以下错误 1 在构建时的警报框中 服务无效 请检查您的设置并重试 0xE8000022 只需重新启动您的 iPod 或 iPhone 即可
  • NSDate 输出不正确[重复]

    这个问题在这里已经有答案了 可能的重复 获取日期与 NSDate date 相差几个小时 https stackoverflow com questions 8466744 getting date from nsdate date off
  • 如何平铺视频/创建视频蒙太奇?

    我有四个视频 我想以 2x2 的方式平铺它们来制作一个新视频 有没有一种方法可以轻松地做到这一点 最好是免费的并且在 Linux 下 我愿意编写适量的程序 也许是为了与某些库交互 但不愿意自己编写整个视频处理程序 您可能会假设输入和输出视频
  • 如何隐藏标签栏并在屏幕上显示完整的表格视图?

    在我的应用程序的实现中 我有一个带有 5 个不同选项卡的选项卡栏控制器 通过以下代码隐藏标签栏后 void hideTabBar for UIView view in self tabController view subviews if
  • 获取 iOS 5 中最后一个重定向的 url?

    有人可以发布最简单的工作代码 当我 GET 请求一个 url 时 它可以获取最后一个重定向的 url nth 吗 我知道我需要使用异步请求 但我无法制定出解决问题的完整工作代码 我正在使用 ios5 因此我可以使用 ios5 中最新添加的异
  • iOS 应用程序和.NET 应用程序之间的通信?

    我有 2 个应用程序 一个是 iOS 应用程序 一个是 NET 应用程序 我希望我的 iOS 应用程序发送一条消息 调用 NET 应用程序的方法 将一些字符串发送到 NET 应用程序以保存到数据库 那么 我的 iOS 应用程序如何与 NET
  • 如何在首选项包中使用 PSLinkListCell 中的值?

    我想为我的越狱调整制作一个偏好包 我成功地制作了一个带有可用开关的首选项捆绑包 但我想要一个选择颜色的设置 例子 Blue Color gt Yellow Green 所以如果我点击Color 它会将我带到另一个屏幕 要求我选择 Blue
  • 函数“FBSDK_NOT_DESIGNATED_INITIALIZER”的隐式声明在 C99 中无效预期“)”

    我正在使用适用于 iOS 4 6 0 的 Facebook SDK 今天将 cocoapods 更新到 0 38 2 后遇到了上述错误 我不确定这个错误与 cocoapods 有什么关系 Error screenshot 我遇到过同样的问题

随机推荐