iOS 如何减慢特定时间段的视频播放速度
iOS how to slow down specific duration of video's playback speed
我想让一部分视频放慢速度,而其余部分是正常速度,就像 iOS 相机拍摄的慢速模式视频一样。怎么做?我搜索了 AVFoundation 但一无所获。
谢谢!
如果您只是谈论在播放期间创建此效果(而不是导出它),您应该可以通过更改 AVPlayer
的 rate
属性 来实现在特定时间。使用 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。
记得在完成时移除时间观察器,并确保在块中使用未保留的对自身或玩家的引用以避免循环引用。
我想让一部分视频放慢速度,而其余部分是正常速度,就像 iOS 相机拍摄的慢速模式视频一样。怎么做?我搜索了 AVFoundation 但一无所获。
谢谢!
如果您只是谈论在播放期间创建此效果(而不是导出它),您应该可以通过更改 AVPlayer
的 rate
属性 来实现在特定时间。使用 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。
记得在完成时移除时间观察器,并确保在块中使用未保留的对自身或玩家的引用以避免循环引用。