1

我有一个用 AVAssetWriter 创建的 30fps Quicktime .mov 静止图像。(它只有大约 10 帧长)。我希望用户能够使用 UISlider 将其减慢到大约 1fps,但是当我将 AVPlayer .rate 属性从 1 调整为 0 时,它不会接近 1fps,它只是停止播放(因为0 速率有效地停止/暂停它,这是有道理的)。但是我怎样才能将播放器的速度降低到大约 1fps?我想我需要做一些数学来计算实际费率,但这就是我卡住的地方。它最终会变成0.000000000000001吗?

谢谢!

4

1 回答 1

0

如果这是我的要求,我将按如下方式处理(Inafziger 在评论中也建议)。使用 AVAssetReader 并为图像滚动我自己的查看器。如您的评论中所述,这将使您使用计时器进行精确控制。确保您重用了一些预先分配的图像内存区域(您可能会为单个图像腾出空间)。我可能会采取像 CoreAudio 这样的拉式方法。当您需要图像时,从调用 AVAssetReaders 读取函数的某个图像缓冲区管理器类中提取它。这样,您就可以拥有 N 个始终可用的缓冲区。这可能有点矫枉过正。我确实相信 AVAssetReader 在初始化时会预解码一些电影。这就是为什么我说你很可能只是使用单个缓冲区来读取图像数据。

您对内存问题的评论。我确实相信 AVAssetReader 和相关类中有一些函数使用创建规则。

于 2012-08-10T16:41:12.353 回答