在AVPlayer中禁用时间搜索

时间:2016-02-16 15:49:30

标签: swift tvos

我正在使用AVPlayer在tvOS中播放非常短的视频。此刻,当我触摸遥控器时,视频的时间线显示出来,我可以快进和快退。有没有办法完全禁用它,即强制用户从头到尾看到剪辑而不能前进/后退/暂停/...?

5 个答案:

答案 0 :(得分:6)

yourPlayerController.requiresLinearPlayback = true可以解决问题。

答案 1 :(得分:1)

使用

self.playerController.setValue(true, forKey: "requiresLinearPlayback")

答案 2 :(得分:0)

您正在使用AVPlayerViewController,如果您使用另一个ViewController并初始化AVPlayer并将其添加为子视图,您将无法获得时间搜索。

如果您想禁用播放/暂停,可以覆盖pressedEnded中的播放/暂停按钮。

答案 3 :(得分:0)

找到问题的简单解决方案:从AVPlayerViewController,可以将属性showsPlaybackControls设置为false。例如,在构造函数中:

class PlayerViewController: AVPlayerViewController, AVPlayerViewControllerDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()
        self.showsPlaybackControls = false
    }
}

然后控件不再出现,前进/后退/播放/暂停也不再起作用。

答案 4 :(得分:0)

在tvOS上,您可以直接致电playerViewController.requiresLinearPlaybackSelector = true但如果您通过Google找到此答案并寻找iOS:

还有相同的api(目前在iOS 11中是私有的),您可以将requiresLinearPlayback设置为true或false。如果您尝试在iOS 10上调用它(如果更改了私有API,可能会在未来的iOS版本中),您将崩溃,所以不要像其他人建议的那样盲目地调用setValue:forKey:

而是使用选择器确保它存在然后安全地调用它:

    let requires = true // or false
    let requiresLinearPlaybackSelector = #selector(setRequiresLinearPlayback(_:))
    if playerViewController.responds(to: requiresLinearPlaybackSelector) {
        playerViewController.perform(requiresLinearPlaybackSelector, with: requires ? 1 : nil)
    }