【问题标题】:iOS how to slow down specific duration of video's playback speediOS如何降低特定持续时间的视频播放速度
【发布时间】:2016-11-02 08:58:15
【问题描述】:

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

谢谢!

【问题讨论】:

  • 这些正在减慢整个视频的速度,我想要的是减慢视频中特定持续时间的速度。例如我想让 10s - 20s 放慢速度,而 0-10 和 20-end 播放正常速度。
  • 你的意思是我可以在播放视频的时候放慢速度?
  • 但它不能减慢视频的特定持续时间速度,如果可能,您能否发布一些代码?
  • 您是只想实现播放还是导出生成的视频?

标签: ios performance avfoundation mode


【解决方案1】:

如果您只是谈论在播放期间创建此效果(而不是导出它),您应该可以通过在特定时间更改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 属性的工作方式如下:

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

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

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

【讨论】:

  • 如果要导出视频怎么办?尝试捕捉实时编辑(加速/减速)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-29
  • 1970-01-01
  • 2022-11-23
相关资源
最近更新 更多