iOS 如何减慢特定时间段的视频播放速度

iOS how to slow down specific duration of video's playback speed

我想让一部分视频放慢速度,而其余部分是正常速度,就像 iOS 相机拍摄的慢速模式视频一样。怎么做?我搜索了 AVFoundation 但一无所获。

谢谢!

如果您只是谈论在播放期间创建此效果(而不是导出它),您应该可以通过更改 AVPlayerrate 属性 来实现在特定时间。使用 addBoundaryTimeObserverForTimes:queue:usingBlock: 在需要更改费率时收到通知。

CMTime interval = CMTimeMake(10, 1);
NSArray *times = @[[NSValue valueWithCMTime:interval]];

_boundaryTimeObserver = [_avPlayer addBoundaryTimeObserverForTimes:times
                                                 queue:nil
                                            usingBlock:^{
                                                [_weakPlayer setRate:0.5];
                                            }];

速率 属性 的工作原理如下:

rate = 0.0; // Stopped
rate = 0.5; // Half speed
rate = 1.0; // Normal speed

对于慢动作播放,AVPlayer 属性 canPlaySlowForward 必须设置为 true。

记得在完成时移除时间观察器,并确保在块中使用未保留的对自身或玩家的引用以避免循环引用。