AVMutableComposition 的性能问题 - scaleTimeRange
Performance issues with AVMutableComposition - scaleTimeRange
我正在使用 scaleTimeRange:toDuration:
来产生高达原始视频 10 倍的快动作效果 speed.But 我注意到当通过 AVPlayer 以 10 倍的速度播放时视频开始断断续续。
我还注意到,在 OSX 的 QuickTime 上,同样的构图播放流畅。
另一个问题指出这是硬件限制的原因,但我想知道是否有办法解决这个问题,以便在整个视频的长度上平滑地出现快动作效果。
视频规格
- 格式 : H.264, 1280x544
- FPS : 25
- 数据大小:26MB
- 数据速率:1.17 Mbit/s
我有一种感觉,使用 scaleTimeRange:toDuration
以 10 倍速播放您的视频只会产生将数据速率乘以 10 的效果,使其达到 10Mbit/s,osx 机器可以处理,但 iOS 设备不能。
换句话说,您正在创建需要以每秒 300 帧的速度播放的视频,这对 AVPlayer
来说太过分了。
如果我不知道你的 other question,我会说解决方案是使用 AVAssetExportSession
导出你的 AVComposition
,这应该会导致你的高 FPS 视频被向下采样到更容易处理的 30fps,然后用 AVPlayer
.
播放
如果 AVAssetExportSession
不起作用,您可以尝试自己应用加速效果,方法是使用 AVAssetReader
从源视频中读取帧,然后使用 AVAssetWriter
(不要忘记设置正确的演示文稿时间戳)。
我正在使用 scaleTimeRange:toDuration:
来产生高达原始视频 10 倍的快动作效果 speed.But 我注意到当通过 AVPlayer 以 10 倍的速度播放时视频开始断断续续。
我还注意到,在 OSX 的 QuickTime 上,同样的构图播放流畅。
另一个问题指出这是硬件限制的原因,但我想知道是否有办法解决这个问题,以便在整个视频的长度上平滑地出现快动作效果。
视频规格
- 格式 : H.264, 1280x544
- FPS : 25
- 数据大小:26MB
- 数据速率:1.17 Mbit/s
我有一种感觉,使用 scaleTimeRange:toDuration
以 10 倍速播放您的视频只会产生将数据速率乘以 10 的效果,使其达到 10Mbit/s,osx 机器可以处理,但 iOS 设备不能。
换句话说,您正在创建需要以每秒 300 帧的速度播放的视频,这对 AVPlayer
来说太过分了。
如果我不知道你的 other question,我会说解决方案是使用 AVAssetExportSession
导出你的 AVComposition
,这应该会导致你的高 FPS 视频被向下采样到更容易处理的 30fps,然后用 AVPlayer
.
如果 AVAssetExportSession
不起作用,您可以尝试自己应用加速效果,方法是使用 AVAssetReader
从源视频中读取帧,然后使用 AVAssetWriter
(不要忘记设置正确的演示文稿时间戳)。