AVMutableComposition的性能问题 - scaleTimeRange

时间:2017-02-22 13:36:16

标签: ios swift avfoundation avmutablecomposition

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

我也注意到在OSX的QuickTime上,同样的构图也能顺利播放。

另一个问题是,造成这种情况的原因是硬件限制,但我想知道是否有解决方法,以便快速运动效果在整个视频的长度上平滑地发生。

视频规范

  • 格式:H.264,1280x544
  • FPS :25
  • 数据大小:26MB
  • 数据速率:1.17 Mbit / s

1 个答案:

答案 0 :(得分:0)

我有一种感觉,通过使用scaleTimeRange:toDuration以10倍播放视频,只需将数据速率乘以10,使其达到10Mbit / s,这是osx机器可以处理的,但iOS设备不能

换句话说,您需要创建需要以每秒300帧的速度播放的视频,这会过度推动AVPlayer

如果我不了解您的other question,我会说解决方案是使用AVComposition导出AVAssetExportSession,这会导致您的高FPS视频被下采样到更容易处理30fps,然后用AVPlayer播放。

如果AVAssetExportSession不起作用,您可以尝试自己应用加速效果,方法是使用AVAssetReader从源视频中读取帧,然后使用{将每个第十帧写入输出文件{1}}(不要忘记设置正确的演示时间戳)。