从视频 URL 中提取缩略图

2023-11-22

我必须从视频(来自网址)中提取缩略图,我使用以下代码:

NSString *stringUrl = video.stringurl;
NSURL *url = [NSURL URLWithString:stringUrl];

AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:url options:nil];
AVAssetImageGenerator *imageGenerator = [[AVAssetImageGenerator alloc]initWithAsset:asset];
[imageGenerator setRequestedTimeToleranceBefore:kCMTimeZero];
[imageGenerator setRequestedTimeToleranceAfter:kCMTimeZero];

CGImageRef imageRef = [imageGenerator copyCGImageAtTime:playerCurrentTime actualTime:&actualtime error:&error];
UIImage *thumbnail = [UIImage imageWithCGImage:imageRef];

CGImageRelease(imageRef);

但有时我在 copyCGImageAtTime 时遇到错误,并且未生成缩略图。错误是:Error save image Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed"(OSStatus error -12792.)", NSLocalizedFailureReason=An unknown error occurred (-12792)}

这里是link我已经阅读了一个解决方案,但如果使用 fileURLWithPath: 而不是 URLWithString: 该方法会在 url 末尾添加一个“-- file://localhost/” ,这会使 url 无效。所以我不知道我能做什么。


如果您正在使用MPMoviePlayerController然后您可以使用此代码从视频 URL 生成缩略图。

NSString *stringUrl = video.stringurl;
NSURL *url = [NSURL URLWithString:stringUrl];
MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:url];
UIImage *thumbnail = [player thumbnailImageAtTime:1.0 timeOption:MPMovieTimeOptionNearestKeyFrame];

但是,使用此代码,播放器将开始自动播放音频。因此,您必须使用以下代码停止播放器:

//Player autoplays audio on init
[player stop];

Update :

保存图像时出错错误域=AVFoundationErrorDomain代码=-11800“ 操作无法完成“(OSStatus错误-12792。)”, NSLocalizedFailureReason=发生未知错误 (-12792)}

该错误可能是由于使用URLWithString。我认为你应该使用-fileURLWithPath代替URLWithString.

示例代码:

NSString *stringUrl = video.stringurl;
NSURL *vidURL = [NSURL fileURLWithPath:stringUrl];

AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:vidURL options:nil];
AVAssetImageGenerator *generate = [[AVAssetImageGenerator alloc] initWithAsset:asset];

NSError *err = NULL;
CMTime time = CMTimeMake(1, 60);

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

从视频 URL 中提取缩略图 的相关文章

随机推荐

  • 类型“String”不符合协议“SequenceType” - Swift 2.0

    我试图在 Swift 2 0 中反转字符串 但在字符串 ifself 上出现错误 func reverseString string String gt String var buffer for character in string b
  • 如何在node.js沙箱中安全地运行用户提交的脚本?

    在 Node js 中安全运行 可能是恶意的 用户提交的脚本有哪些选项 IE 在阻止代码访问敏感数据和 API 的环境中 vm runInNewContext userScript 是一个诱人的起点 但似乎有已知的问题 there The
  • IE10 User-Agent导致ASP.Net不发回Set-Cookie(IE10不设置cookie)

    Summary ASP Net 不发回Set Cookie使用 IE 10 时的标头 这意味着 例如 在使用表单身份验证时 您无法使用 IE10 登录 ASP Net 站点 Detail 我们目前正在针对 IE 10 预览版 2 测试我们的
  • 在卡萨布兰卡设置基本 HTTP 身份验证

    我正在尝试修改卡萨布兰卡教程包括基本的 HTTP 身份验证以访问繁荣API auto fileStream std make shared
  • 在 ASP.NET 中重新生成 SessionID

    请建议如何在 ASP NET 中重新生成新的会话 ID 如果我们使用 SessionManager 生成新的 id 那么它不会更改 Session SessionID 的值 请建议如何实现这一目标 基本上我想在放弃 Session 或使用
  • 如何通过单击电子邮件超链接打开 Outlook

    我有一个表 其中一列是电子邮件地址 我需要添加到此电子邮件地址的超链接 以便单击它会打开 Outlook 其中的电子邮件地址为TO field 有人可以帮忙吗 Try this a href title title Email a 这里 A
  • 在 iPhone 中以编程方式获取用户的 AppleId

    是否可以获取当前登录设备的用户的Apple ID 实际上 我实现了应用内购买 并且在用户购买应用程序时获得了设备 ID 和 Apple ID 不 这是不可能的 您可以使用 UIDevice currentDevice identifierF
  • Python:创建动态函数

    我有一个问题 我想创建动态函数 该函数将根据从数据库检索的值进行一些计算 我很清楚我的内部计算 但问题是如何创建动态类 我的结构是这样的 class xyz def Project start 2011 01 03 def Phase1 e
  • Java/Tomcat 被黑客攻击 [已关闭]

    Closed 这个问题是无关 目前不接受答案 最近我的 tomcat 服务器上出现了一些明显是黑客企图的文件 我支持使用 struts 和 ibatis 以及各种其他框架的旧应用程序 创建了三个文件 一个是实际 webapp 目录下的 sy
  • 升级到 JUnit4 并通过一起运行旧版 JUnit 3 测试和测试套件来保留它们

    我很惊讶到目前为止还没有找到答案 如果我错过了一些基本的东西 我会非常高兴知道这一点 有一个大型遗留代码库已升级到 Java 6 从 1 4 代码中存在大量 JUnit 3 测试 并被组织成测试套件 可以使用 Eclipse 中的 JUni
  • 如何首先定义嵌套的识别关系实体框架代码

    我目前首先在一个简单的测试应用程序中使用 EF5 代码来测试各种功能 我定义了两个实体之间的 识别关系 表示一对多链接 这里我定义了一个 PhotoCollection 它有很多子 Photo 实体 public class PhotoCo
  • 在 side div 中随机位置生成数字而不重叠

    我想在 div 内的随机位置显示随机数而不重叠 我能够在随机位置显示随机数 但它超出了盒子范围并相互重叠 这是我的代码 JSFiddle var width container innerWidth var height container
  • 在 Raphael Javascript 库中渲染 SVG 多边形

    据我所知 目前 Raphael Javascript 库中无法显示 SVG 多边形 我正在构建一个需要读取 SVG 并在 Raphael 中显示它们的应用程序 但是 许多 SVG 使用多边形 例如 我正在读取具有以下格式的多边形的 SVG
  • PyQt5 到 PySide2,加载不同类中的 UI 文件

    我有一个在 python3 6 下运行的 python 应用程序 并使用 PyQt5 加载 Ui 窗口 这些窗口是使用 Qt Designer 5 9 4 创建的 下面的代码显示了 PyQt5 的工作示例 现在我想拥有完全相同的功能 但使用
  • 返回具有嵌套级别和值的嵌套列表

    我想使用可视化一些深层嵌套的数据网络D3 我不知道如何在发送之前将数据转换为正确的格式radialNetwork 这是一些示例数据 level lt c 1 2 3 4 4 3 4 4 1 2 3 value lt letters 1 11
  • 是否可以将流量路由到特定 Pod?

    假设我正在 GKE 中运行我的应用程序 这是一个多租户应用程序 我创建了多个托管我的应用程序的 Pod 现在我想要 客户 1 1000 使用 Pod1 使用 Pod2 的客户 1001 2000 ETC 如果我有一个指向我的集群的 gclo
  • 使用 GLUT 在 3D OpenGL 世界中显示固定位置 2D 文本

    我有一个OpenGL项目使用GLUT 不是 freeglut 其中我想在视口上的固定位置显示 2D 文本 我的其余对象位于 3D 世界坐标中 这个答案一个相关的老问题说 GLUT 附带的位图字体是简单的 2D 字体 不适合在 3D 环境中显
  • 这是 .NET 的 Regex.Split 中的错误吗?

    我有两个正则表达式 用于Regex Split lt G and lt G 2 分割字符串时 A B C D E F G 第一个结果是 A B C D E F G 第二个结果是 A B A C D C E F E G 这里发生了什么 我以为
  • 让 html5 地理定位在用户每次重新加载页面时请求许可

    为什么我们需要它 我们的网站上有一些页面 允许用户输入一些数据并搜索其所在地区的其他客户 当用户打开该页面时 必须显示弹出消息 http foo bar com想要使用您当前的位置 之后 用户可以放弃它并手动填写位置字段或接受并自动重定向到
  • 从视频 URL 中提取缩略图

    我必须从视频 来自网址 中提取缩略图 我使用以下代码 NSString stringUrl video stringurl NSURL url NSURL URLWithString stringUrl AVURLAsset asset A