我有一个AvPictureInPictureController
,它应该在播放音频时显示图像。我创建了一个AVSampleBufferDisplayLayer
,它有一个带图像的CMSampleBuffer
和两个必要的代理AVPictureInPictureSampleBufferPlaybackDelegate
和AVPictureInPictureControllerDelegate
。我设置pictureInPictureController.requiresLinearPlayback = false
,以便图片窗口中的图片显示向后搜索、播放/暂停和向前搜索按钮。下面是我的时间范围函数:
func pictureInPictureControllerTimeRangeForPlayback(_ pictureInPictureController: AVPictureInPictureController)
-> CMTimeRange {
let duration = player.state.duration
if duration == 0 {
return CMTimeRange(start: .negativeInfinity, duration: .positiveInfinity)
}
return CMTimeRange(
start: CMTime(
seconds: .zero,
preferredTimescale: 10_000
),
duration: CMTimeMakeWithSeconds(
duration,
preferredTimescale: 10_000
)
)
}
我的问题是,在画中画中,向前搜索被禁用。向后搜索工作正常,播放/暂停也一样。但是向前搜索被禁用,我还不知道为什么会发生这种情况。有什么想法吗?
我试图以不同的方式计算CMTimeRange
,但它总是相同的行为。
1条答案
按热度按时间qrjkbowd1#
我在www.example.com上找到了这个项目https://github.com/getsidetrack/swiftui-pipify/blob/main/Sources/PipifyController.swift#L250其中
CMTimeRange
是从CACurrentMediaTime()
计算出来的,尽管我不知道为什么会有这么大的时间范围(比如以秒为单位计算一周),但CACurrentMediaTime()
是正确的提示。这就是
pictureInPictureControllerTimeRangeForPlayback
现在的样子: