问题标签 [avassetimagegenerator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
453 浏览

ios - generateCGImages根据实际时间异步产生重复图像

我可以使用 获取视频中的帧AVAssetImageGenerator,并且使用generateCGImagesAsynchronously. 每当结果成功时,我都会requestedTime以秒为单位打印该图像以及actualTime该图像的 。然而,最后,actualTimes即使我的步长值和时间帧间隔均匀,两个生成的图像也是相同的并且具有相同的。

这是我为每张图像打印的请求和实际时间的片段(以秒为单位):

在生成对应于视频中 1.1 秒的帧之前似乎一切正常,这会导致两个相同的图像,并且actualTime在其余过程中被延迟。

我已经尝试调整计算应该生成的帧的方式,但它似乎是正确的。我使用每秒帧数并将其乘以视频持续时间来计算我总共需要多少帧,并且我将总持续时间除以样本计数以确保均匀生成 cgImages。

以及我创建图像的方式(见此):

在调用之前,我还将容差设置为零generateCGImages

我希望实际时间与请求的时间一致,并且每个生成的图像都不同。纵观图像,无论正在测试的视频如何,总是存在重复的,并且通常发生在中间到结尾。

编辑:

我发现thisthisthis都提到了同样的问题,但我没有成功。

0 投票
0 回答
119 浏览

ios - 是否有每秒获取 10 帧视频的功能?

我正在尝试从imagePickerController. 我使用这个功能,但从 0.1s -> 1s 的图像是相同的,从 1.1 到 2s 也是。有什么办法吗?这是我的功能:

还是我需要提高视频质量?感谢帮助。

0 投票
2 回答
239 浏览

ios - 在 Swift (iOS) 中从视频创建帧

有一个持续时间为 3 秒的视频文件。我需要创建 30 帧 - UIImages。每 0.1 秒捕获一次图像。我尝试使用 AVAssetImageGenerator 和 CMTimeMake,但我总是得到 30 个相似的图像,或者 15 个相似的图像和 15 个相似的图像。

请帮助了解如何从该视频中制作这种幻灯片。或者也许有一些更好的方法来做到这一点。

请看下面的代码:

0 投票
1 回答
61 浏览

swift - 仅当功能完成创建它们时才从视频中检索 UIImage - 快速 - 以编程方式快速

我正在使用以下UIImages视频创建generateCGImagesAsynchronouslyForTimes

由于每次创建新图像时都会调用该函数的完成处理程序,因此completion()会多次调用该函数的完成处理程序。

我想实现completion()仅在创建所有图像(在本例中为 7)之后才调用它。我该怎么做?

0 投票
0 回答
103 浏览

swift - 使用 Metal GPU 在 Swift 中提取视频帧

我正在尝试创建一个小型 macOS 应用程序,该应用程序根据时间因素从视频中抓取一堆帧,视频从用户计算机拖放到应用程序中,类似于电影编辑器(例如 iMovie)

例如:因子 = 5 -> 每 5 秒获取一帧。

目前我正在使用以下代码AVAssetImageGenerator

然而,这个功能似乎需要很长时间才能完成,尤其是我从 1 到 6 传递了 6 个不同的因素。

这个计算应该很快,用户不应该等待太多,特别是如果他有 120 分钟的视频:)

问题是,我们可以使用 Metal 在 GPU 上运行上述代码以使其更快吗?以及其他软件如何快速生成帧而没有任何延迟?

0 投票
0 回答
191 浏览

ios - 使用 AVAssetWriter 将图像转换为视频期间的 iOS 快速内存问题

我已经为此做了很多搜索并做了很多实验,但我没有得到任何合适的解决方案。

我尝试将 UIImages 转换为视频。我有 250 多个图像数组,我尝试将这些图像转换为 60FPS 的视频。

我将渲染代码放在 autoreleasepool 方法中并添加一些其他代码也添加 autoreleasepool 但没有效果。

代码。

内存使用情况 :

在此处输入图像描述

使用此代码获取图像:

预先感谢

0 投票
1 回答
73 浏览

thumbnails - 如果视频来自本地库文件夹,则视频缩略图生成失败

使用iOS14.5、Swift5.4、Xcode12.5、

我尝试在 Swift 中创建视频的缩略图。

这一切都适用于源自互联网的视频。

但是,在我的情况下,视频来自应用程序的库文件夹,它预先保存在该文件夹中。由于某种未知原因,这似乎使缩略图创建失败。

这是我的步骤:

  1. 我首先通过执行以下操作将视频从捆绑包复制到 iPhone 沙盒的库文件夹(videoURL 是本地库文件夹中的某个位置)
  1. 然后我尝试通过以下代码生成缩略图。

但是此代码总是失败并出现以下错误:

这里是缩略图生成的代码:

0 投票
0 回答
32 浏览

ios - 使用 AVAssetImageGenerator 得到了一些 nil CGImages

我想从视频中提取帧作为 UIImage 。这就是我使用AVAssetImageGenerator.
首先我保存了times

为了获取帧作为图像,我使用了这种方法

在这里,我得到了一些 nil cgImages。我不知道为什么他们是零。但我需要使用时间段将所有帧作为 cgImages 获取。
怎么解决?
我知道还有另一种使用方法的imageGenerator.copyCGImage方法。但是将所有帧生成为 UIImage 需要太多时间```

0 投票
0 回答
21 浏览

deep-learning - 如何从 ImageDataGenerator 获取 x_train?

我正在研究图像分类 CNN,我想知道如何使用 ImageGenerator 获得 x_train 和 y_train 形式。这样做的原因是我想将我的模型拟合为 fit note fit.generator

由于批量大小为 32,print(x_train) 为 (32,28,28,1)。我总共有 5000 个训练数据集,我想为 print(x_train) 获取 (5000,28,28,1)