无法让 AVAssetImageGenerator 为我提供电影的所有帧

2023-12-07

我不能有AVAssetImageGenerator给我一部电影的所有帧。

使用此代码:

NSString *path = [[NSBundle mainBundle] pathForResource:@"video" ofType:@"mov"];
NSURL *url=[NSURL fileURLWithPath:path];
NSDictionary *options = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:AVURLAssetPreferPreciseDurationAndTimingKey];
self.asset=[[AVURLAsset alloc] initWithURL:url options:options];

NSMutableArray *thumbTimes=[NSMutableArray arrayWithCapacity:asset.duration.value];
for(int t=0;t < asset.duration.value;t++) {
    CMTime thumbTime = CMTimeMake(t,asset.duration.timescale);
    NSValue *v=[NSValue valueWithCMTime:thumbTime];
    [thumbTimes addObject:v];
}
self.generator = [[AVAssetImageGenerator alloc] initWithAsset:asset];
self.generator.appliesPreferredTrackTransform=TRUE;
self.generator.requestedTimeToleranceAfter=kCMTimeZero;
self.generator.requestedTimeToleranceBefore=kCMTimeZero;


AVAssetImageGeneratorCompletionHandler handler = ^(CMTime requestedTime, CGImageRef im, CMTime actualTime, AVAssetImageGeneratorResult result, NSError *error){
    if (result != AVAssetImageGeneratorSucceeded) {
        NSLog(@"couldn't generate thumbnail, error:%@", error);
    }
    NSLog(@"actual time: %lld/%d (requested: %lld/%d)",actualTime.value,actualTime.timescale,requestedTime.value,requestedTime.timescale);
};
CGSize maxSize = CGSizeMake(320, 180);
generator.maximumSize = maxSize;
[generator generateCGImagesAsynchronouslyForTimes:thumbTimes completionHandler:handler];

I get:

2012-04-19 18:55:06.801 OpenCVClient[77273:13b07] actual time: -9/600 (requested: 0/600)
2012-04-19 18:55:07.836 OpenCVClient[77273:13b07] actual time: -9/600 (requested: 1/600)
2012-04-19 18:55:08.314 OpenCVClient[77273:13b07] actual time: -9/600 (requested: 2/600)
2012-04-19 18:55:09.350 OpenCVClient[77273:13b07] actual time: -9/600 (requested: 3/600)
2012-04-19 18:55:10.186 OpenCVClient[77273:13b07] actual time: -9/600 (requested: 4/600)
2012-04-19 18:55:11.257 OpenCVClient[77273:13b07] actual time: -9/600 (requested: 5/600)
2012-04-19 18:55:11.697 OpenCVClient[77273:13b07] actual time: -9/600 (requested: 6/600)
2012-04-19 18:55:12.246 OpenCVClient[77273:13b07] actual time: -9/600 (requested: 7/600)
2012-04-19 18:55:13.255 OpenCVClient[77273:13b07] actual time: -9/600 (requested: 8/600)
2012-04-19 18:55:14.513 OpenCVClient[77273:13b07] actual time: -9/600 (requested: 9/600)
2012-04-19 18:55:15.944 OpenCVClient[77273:13b07] actual time: -9/600 (requested: 10/600)
2012-04-19 18:55:17.230 OpenCVClient[77273:13b07] actual time: 11/600 (requested: 11/600)
2012-04-19 18:55:17.995 OpenCVClient[77273:13b07] actual time: 11/600 (requested: 12/600)
2012-04-19 18:55:18.716 OpenCVClient[77273:13b07] actual time: 11/600 (requested: 13/600)
2012-04-19 18:55:19.399 OpenCVClient[77273:13b07] actual time: 11/600 (requested: 14/600)

正如你在我尝试设置的代码中看到的AVURLAssetPreferPreciseDurationAndTimingKey, requestedTimeToleranceBefore and requestedTimeToleranceAfter没有效果。

有任何想法吗?


使用您的代码,您可以获得电影的所有帧。请求时间与实际时间之间的差异是由电影帧速率引起的。看来,你的电影大约有。 25-29 帧/秒。例如,时间 1/600 秒和 8/600 秒之间没有差异帧。

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

无法让 AVAssetImageGenerator 为我提供电影的所有帧 的相关文章

  • 如何开始复杂级别的跨平台移动应用开发? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何从 ContentView 外部显示 SwiftUI 警报?

    我正在构建 Swift 应用程序 并试图找出如何显示警报 我有一个单独的 swift 文件正在执行一些计算 并且在某些条件下我希望它向用户显示警报 基本上告诉他们出了问题 然而 我见过的大多数例子都要求警报在ContentView或以其他方
  • React-native-vision-camera无法访问后面的普通摄像头

    我正在尝试在 iPhone 11 Pro 上使用 普通 相机 我使用反应本机视觉相机 当我运行这段代码时 const devices useCameraDevices const deviceBack devices back consol
  • 错误域=kAFAssistantErrorDomain 代码=209“(空)”

    我面临着一个问题SFSpeechRecognizer 启动应用程序几秒钟后 我开始收到错误消息 错误域 kAFAssistantErrorDomain 代码 209 空 和 错误 域 kAFAssistantErrorDomain 代码 2
  • 将图像保存在相机胶卷中并获取资源 URL

    对于我正在开发的应用程序 我使用 UIImagePickerController 拍摄照片并将其存储在相机胶卷中 void imagePickerController UIImagePickerController picker didFi
  • CALayer边框奇怪问题

    我正在向 CALayer 添加边框 但有一些奇怪的行为 在我应用的边框之后出现模糊边框 参见屏幕截图 这是我的代码 void configureLabel self hidden YES self textAlignment NSTextA
  • dyld:无法加载插入的库

    当我尝试运行 UI 和单元测试时 出现异常 dyld 无法加载插入的库 private var containers Bundle Application AutoTestingApp app Frameworks IDEBundleInj
  • iPhone - UIImage imageWithData 返回 nil

    我需要从字节数组创建 UIImage 现在我创建了字节数组 image CGImageCreateWithImageInRect aux CGImage imageRect context CGBitmapContextCreate dat
  • iOS 7 上 Safari 浏览器的用户代理

    我只想在带有 Safari 浏览器的 iPhone 和 iPod 中打开我的网站 对于 Chrome Dolphin 等任何其他浏览器 它不应该打开 但目前我从几乎所有设备获得相同的用户代理 对于Safari User Agent Stri
  • ReactiveCocoa 将 SignalProducers 合二为一

    我正在使用 ReactiveCocoa 并且我有几个 SignalProducers let center NSNotificationCenter defaultCenter let signalProducer1 center rac
  • 如何向标准 UIButton 添加徽章? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 是否可以在标准中添加看起来标准的徽章UIButton 如果不支持半原生 那么实现此目的最简单的方法是什么 示例图片 这是 Sascha
  • 访问目标 c 中的类方法。使用 self 还是类名?

    我正在学习 iOS 编程 并且对以下有关关键字 self 的使用的代码感到困惑 据我了解 self就像Java的this 它指的是当前实例 当我想调用类方法时 通常的方式应该是这样 PlayingCard validSuits 但是侵入实例
  • 如何在 UIScrollView 中启用缩放

    如何启用缩放功能UIScrollView 答案是here https developer apple com documentation uikit uiscrollview 滚动视图还可以处理内容的缩放和平移 当用户做出捏合或张开手势时
  • 接收者'ClassName'是一个转发类,对应的@interface可能不存在

    我目前正在寻找一个UIPickerTable在 UIPickerView subviews 内 所以我循环并执行isKindOfClass UIPickerTable class 它有效 但由于 UIPickerTable 的标头未公开 我
  • iOS:如何知道 reloadData() 已完成其任务?

    我想滚动到给定索引 self boldRowPath 但是当我调试时scrollToRow之前执行reloadData 如何知道reloadData已完成 func getAllTimeEvent self arrAllTimeEvent
  • 如何在 UICollectionView 中将行居中?

    我有一个UICollectionView与随机细胞 有什么方法可以让我将行居中吗 默认情况下它是这样的 x x x x x x x x x x x x x x 这是所需的布局 x x x x x x x x x x x x 我必须做这样的事
  • CoreBluetooth:检测设备超出范围/连接超时

    我正在设计一个 iOS 框架来处理多个 BLE 设备 均为同一类型 目前一切都运行良好 除了一件事 客户想要一个包含可用设备的列表 但是 我如何检测过去发现的设备何时不再可用 当我尝试连接到不再可用的设备时 会出现另一个问题 文档说 连接尝
  • 是否可以跨 2 个不同的 iOS 应用程序访问数据?

    假设我在 App1 中存储了一些 ID 数据 并希望在同一设备上的 App2 中访问它 平台上可以这样吗 如果没有的话有什么解决方法吗 您可以使用iOS 钥匙扣 http developer apple com library ios do
  • 像 TraceGL 一样分析 Objective C 中的代码路径?

    TraceGL 是一个非常简洁的项目 它允许 JS 程序员跟踪 Javascript 中的代码路径 它看起来像这样 我想为 Objective C 构建类似的东西 我知道运行时使跟踪方法调用变得相当容易 但是我如何跟踪控制流 例如 在上面的
  • ios - 如何声明静态变量? [复制]

    这个问题在这里已经有答案了 C 中声明的静态变量如下 private const string Host http 80dfgf7c22634nbbfb82339d46 cloudapp net private const string S

随机推荐

  • 宽松的内存顺序效果是否可以延长到执行线程的生命周期之后?

    假设在 C 11 程序中 我们有一个名为A启动一个名为的异步线程B 内螺纹B 我们对原子变量执行原子存储std memory order relaxed记忆顺序 然后穿线A用线程连接B 然后穿线A启动另一个名为C执行原子加载操作std me
  • 让调用堆栈向上增长会使缓冲区溢出更安全吗?

    每个线程都有自己的堆栈来存储局部变量 但堆栈也用于存储返回地址调用函数时 在 x86 汇编中 esp指向最近分配的堆栈末尾 如今 大多数 CPU 的堆栈都出现负增长 此行为可以通过溢出缓冲区并覆盖保存的返回地址来执行任意代码 如果堆栈正向增
  • 如何设置ImageView透明

    我的图像设置为 50 透明 当我把它放到ImageView上时 它完全不透明 看不到后面的东西 如何在xml中为ImageView设置100 透明 以便当我设置图像时 我可以看到后面的东西 我试过 android opacity trans
  • 表格行上的框阴影未出现在某些浏览器上

    表格行上的 CSS 框阴影 tr 跨浏览器的工作似乎不一致 在某些浏览器上会显示阴影 在其他人身上 没有影子 我正在使用以下 CSS tr background color rgb 165 182 229 box shadow 0px 2p
  • 如何取消设置 JavaScript 变量?

    我在 JavaScript 中有一个全局变量 实际上是一个window属性 但我认为这并不重要 它已经由以前的脚本填充 但我不希望稍后运行另一个脚本来查看它的值 或者甚至定义它 我已经把some var undefined它用于测试目的ty
  • Excel VBA 对于带有数据验证列表的每个循环

    我有 4 个数据验证下拉列表 我想使用 for every 循环来迭代 4 个数据验证下拉列表的所有可能值 并将结果复制到工作表中 下拉菜单位于单元格 H3 和 H4 以及 U3 和 U4 中 H3 和 U3 包含相同的值 H4 和 U4
  • 字符编码 - RequestDispatcher

    我有一个 servlet 我使用 String error error request setAttribute loginError error request setCharacterEncoding UTF 8 request get
  • 如何导出 Spearman 相关性

    我正在尝试将 Spearman 相关矩阵导出到rtf或 Excel 文件使用estpost和社区贡献的命令esttab 但是 我收到以下错误 invalid subcommand r 198 下面是我的代码 estpost spearman
  • ASIO 直接从异步解析获取 tcp 端点

    我正在寻找使用 ASIO 独立库 不是 Boost ASIO 我正在尝试设置客户端以连接到特定端口上的服务器 我看到在波特漏斗例如 无需处理迭代器即可获取端点 asio io service io service Determine the
  • Xcode:为什么“用户交互已启用”出现两次?

    这个问题适用于 Xcode 3 和 4 为什么这个复选框出现两次 在身份检查器和属性检查器下 更重要的是 为什么改变一个值不会影响另一个值呢 身份检查器中启用的用户交互指的是可访问性协议 这是一个链接无障碍编程指南您可以勾选不同的特征来修改
  • jquery新手:将验证与隐藏提交按钮结合起来

    我是 jQuery 新人 我已经验证可以使用我的表单 MVC 1 0 C
  • 如何在VBA中对变量范围内的值求和?

    我有一张表格 如下所示 在 C 列中 如果 A 列具有相同的索引 B 列 我想对 A 列中的值求和 如果所有行具有相同的索引 如 D 列所示 我想对所有行输入总和结果 不幸的是 具有相同索引的值的范围是可变的 我的宏可以仅使用 2 个索引对
  • python sendall 未引发连接关闭错误

    我有以下代码 在 linux mac 远程和本地计算机上使用 python2 7 和 python3 5 进行了测试 import socket import time s socket socket s connect 127 0 0 1
  • 无法解码流 java.io.FileNotFoundException /storage/emulated/0 打开失败:ENOENT(没有这样的文件或目录

    你好 我正在尝试保存在我的应用程序上拍摄的图片 但是当我尝试访问内存来放置数据时 出现错误 无法解码流 java io FileNotFoundException storage emulated 0 打开失败 ENOENT 没有这样的文件
  • 获取 Facebook 上好友的好友列表

    我最近开始研究 Facebook API 并试图找出如何检索另一个用户的朋友列表 在本例中 该用户是我的朋友 到目前为止 我只知道如何找到我也是朋友的人的朋友 然而 Friends Wheel 应用程序可以做到这一点 因为您可以为您的一位朋
  • 如何确定C++函数调用顺序?

    我将跳过标题 class X int i static int j public X int ii 1 i ii j i static int incr return j static int f return incr int tmain
  • 在 WordPress 中上传期间重命名文件

    我正在尝试重命名上传文件名以匹配帖子标题 另一个线程显示了如何重命名为哈希 在 WordPress 后端上传期间重命名文件 使用此代码 function make filename hash filename info pathinfo f
  • 在 Firefox 扩展中按域名/名称访问特定 cookie

    我正在开发一个 Firefox 扩展 需要从特定域访问特定 cookie 我有这段代码 可以获取所有域的所有 cookie 我如何仅请求我正在查找的 cookie var Cc Ci require chrome var cookieMan
  • Xamarin Forms旋转列表视图调整行宽

    在 Xamarin Forms 中 我想实现一个水平列表视图 如下图所示 通过旋转这是可能的 但我无法更改行宽 是否也有可能让第二个布局在第一个布局下开始 提前致谢
  • 无法让 AVAssetImageGenerator 为我提供电影的所有帧

    我不能有AVAssetImageGenerator给我一部电影的所有帧 使用此代码 NSString path NSBundle mainBundle pathForResource video ofType mov NSURL url N