AVMutableComposition 的性能问题 - scaleTimeRange

Performance issues with AVMutableComposition - scaleTimeRange

我正在使用 scaleTimeRange:toDuration: 来产生高达原始视频 10 倍的快动作效果 speed.But 我注意到当通过 AVPlayer 以 10 倍的速度播放时视频开始断断续续。

我还注意到,在 OSX 的 QuickTime 上,同样的构图播放流畅。

另一个问题指出这是硬件限制的原因,但我想知道是否有办法解决这个问题,以便在整个视频的长度上平滑地出现快动作效果。

视频规格

我有一种感觉,使用 scaleTimeRange:toDuration 以 10 倍速播放您的视频只会产生将数据速率乘以 10 的效果,使其达到 10Mbit/s,osx 机器可以处理,但 iOS 设备不能。

换句话说,您正在创建需要以每秒 300 帧的速度播放的视频,这对 AVPlayer 来说太过分了。

如果我不知道你的 other question,我会说解决方案是使用 AVAssetExportSession 导出你的 AVComposition,这应该会导致你的高 FPS 视频被向下采样到更容易处理的 30fps,然后用 AVPlayer.

播放

如果 AVAssetExportSession 不起作用,您可以尝试自己应用加速效果,方法是使用 AVAssetReader 从源视频中读取帧,然后使用 AVAssetWriter(不要忘记设置正确的演示文稿时间戳)。