我正在一个项目中工作,我需要拖动图像并为其创建视频,当我在主视图中使用它时效果很好。
我使用ScreencaptureView.h
和ScreencaptureView.m
文件进行视频录制,我在主视图中对其进行子视图,并在捕获视图中添加图像对象的子视图。
现在的问题是因为我在ScreencaptureView
拖动中查看图像变得很慢。
可以做些什么来解决这个问题。
我正在一个项目中工作,我需要拖动图像并为其创建视频,当我在主视图中使用它时效果很好。
我使用ScreencaptureView.h
和ScreencaptureView.m
文件进行视频录制,我在主视图中对其进行子视图,并在捕获视图中添加图像对象的子视图。
现在的问题是因为我在ScreencaptureView
拖动中查看图像变得很慢。
可以做些什么来解决这个问题。
我并不奇怪它会减慢你的动画速度。要捕获并作为图像保存到内存中的数据量是巨大的。这里没有奇迹。数据必须从图形内存刷新到 RAM,然后再到磁盘,这需要很长时间。我向您推荐的是分两步完成。主要思想是实时捕获尽可能少的数据。
- 第 1 步:实时捕捉
在此步骤中,不要将您的子视图放在 ScreencaptureView 中,而是放在普通视图中,或者如果该选项可用,则禁用捕获。仅捕获您在字典中的每个图像上所做的翻译值,例如键引用您的图像的位置(带有指向图像的指针的 NSValue)。每帧保存一个字典。然后你有一个字典数组。您可以想象其他解决方案来存储您转储的数据。您可以以 30 fps 或 60 fps 轻松完成。这样,您的捕获非常轻量级,并且动画对于用户来说将是完全流畅的。
-步骤 2:重播 - 后处理
现在您可以将您的子视图放在 ScreencaptureView 中,或者如果已经简单地激活捕获模式。通过读取您记录的值来重播您的动画,并将相应的翻译重新应用于图像(当然,您必须保留它们)并像往常一样捕获帧。现在它可以变慢,但没关系。帧将被一一处理。
这个完成了 !你现在有一个流畅的动画视频截图。
清楚吗 ?
尝试这个