[英]Sound stops when I use seek to repeat part of AVQueuePlayer inside addBoundaryTimeObserver
我有一个在 AVQueuePlayer 中播放的视频。 视频中有几个部分以缩略图的形式在视觉上表示。 用户可以选择一个或多个相邻的部分来仅重放视频的该段。
例如:
为此,我使用 addBoundaryTimeObserver 在每次视频到达部分末尾时触发调用。 当每个回调被触发时:
问题来了:
我尝试设置任何可用的 AVAudioTimePitchAlgorithm 值。 他们没有帮助。 我曾尝试在搜索功能中使用 completionHandler。 那没有帮助。 我什至尝试在查找后添加延迟,认为需要一些时间。 那没有帮助。
关于这个的任何想法? 我很想知道为什么它在只有一个部分循环时有效,而当它返回到 2 个部分时却没有。
frontVideoPlayer?.addBoundaryTimeObserver(forTimes: callbackCMTimes, queue: DispatchQueue.main) {
[weak self] in
print("Trigerred callback", self!.frontVideoPlayer?.currentTime())
let roundedCurrent = (CMTimeGetSeconds((self!.frontVideoPlayer?.currentTime())!) * 10).rounded() / 10 // rounding up to 1 decimal point
let restartSelectionTime = CMTimeGetSeconds(instructors[self!.instructorIndex].dances[self!.danceIndex].danceMoves[self!.endMove].endTime)
if (roundedCurrent == restartSelectionTime) {
print("RESTART SEGMENT. highlight ", self!.startMove )
self!.frontVideoPlayer?.pause()
self!.frontVideoPlayer?.seek(to: CMTimeAdd(instructors[self!.instructorIndex].dances[self!.danceIndex].danceMoves[self!.startMove].startTime, self!.timeToAdd), toleranceBefore: CMTime.zero, toleranceAfter: CMTime.zero , completionHandler: {_ in
DispatchQueue.main.asyncAfter(deadline: .now() + 2.5) {
self!.frontVideoPlayer?.rate = Float(self!.videoSpeed)
}
})
} }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.