我正在尝试在播放到达特定时间时执行操作。我找不到任何委托方法或如何执行此操作的示例。如何在播放到达某个点时调用方法?
答案 0 :(得分:1)
那可以帮助你addBoundaryTimeObserverForTimes:queue:usingBlock:
在遍历指定时间时请求调用块 在正常播放期间。
目标C:
- (id)addBoundaryTimeObserverForTimes:(NSArray<NSValue *> *)times
queue:(dispatch_queue_t)queue
usingBlock:(void (^)(void))block;
<强>夫特:强>
func addBoundaryTimeObserver(forTimes times: [NSValue],
queue: DispatchQueue?,
using block: @escaping () -> Void) -> Any
<强>用法:强>
_ = self.player.addBoundaryTimeObserver(forTimes: times, queue: DispatchQueue.main, using: {
[weak self] time in
// Your code goes here
})
答案 1 :(得分:1)
添加更多细节。
您可以addBoundaryTimeObserver(forTimes:queue:using:)
一段时间或定期使用addPeriodicTimeObserver(forInterval:queue:using:)
。
// for specific time
func addTimeObserver() {
var times = [NSValue]()
var currentTime = kCMTimeZero // make your time here
times.append(NSValue(time:currentTime))
// Queue on which to invoke the callback
let mainQueue = DispatchQueue.main
// Add time observer
timeObserverToken =
player.addBoundaryTimeObserver(forTimes: times, queue: mainQueue) {
[weak self] time in
// Update UI
}
}
在正常播放期间每半秒发光一次
func addPeriodicTimeObserver() {
// Invoke callback every half second
let interval = CMTime(seconds: 0.5,
preferredTimescale: CMTimeScale(NSEC_PER_SEC))
let mainQueue = DispatchQueue.main
timeObserverToken =
player.addPeriodicTimeObserver(forInterval: interval, queue: mainQueue) {
[weak self] time in
// update UI
}}