Отключить поиск по времени в AVPlayer

Я использую AVPlayer для воспроизведения очень коротких видео в tvOS. В тот момент, когда я касаюсь пульта, появляется временная шкала видео, и я могу быстро перематывать вперед и назад. Есть ли способ полностью отключить это, то есть заставить пользователя просматривать клип от начала до конца без возможности перемотки вперед/назад/пауза/...?


person Jan S. Müller    schedule 16.02.2016    source источник


Ответы (5)


yourPlayerController.requiresLinearPlayback = true сделает свое дело.

person Julio Flores    schedule 17.11.2016

Использовать

self.playerController.setValue(true, forKey: "requiresLinearPlayback")
person Carlos Chaguendo    schedule 27.10.2017

В tvOS вы можете просто позвонить playerViewController.requiresLinearPlaybackSelector = true напрямую, но если вы найдете этот ответ через Google и ищете iOS:

Существует также тот же API (в настоящее время частный в iOS 11), где вы можете установить requiresLinearPlayback в значение true или false. У вас произойдет сбой, если вы попытаетесь вызвать его на iOS 10 (и, возможно, в будущих версиях iOS, если частный API будет изменен), поэтому НЕ вызывайте setValue:forKey: вслепую, как предлагали другие.

Вместо этого используйте селектор, чтобы убедиться, что он существует, а затем безопасно вызовите его:

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

Вы используете AVPlayerViewController, если вы используете другой ViewController и инициализируете AVPlayer и добавляете его в качестве подпредставления, вы не получите поиск времени.

Если вы хотите отключить воспроизведение/паузу, вы можете переопределить кнопку воспроизведения/паузы в pressedEnded.

person Jeroen Bakker    schedule 23.02.2016
comment
Спасибо, я не решил проблему так, как вы предложили, но это привело меня к правильному ответу, раньше мне было непонятно, что за поиск времени отвечает AVPlayerViewController. - person Jan S. Müller; 25.02.2016

Нашел простое решение проблемы: из AVPlayerViewController можно установить для свойства showPlaybackControls значение false. Так, например, в конструкторе:

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

Затем элементы управления больше не появляются, а вперед/назад/воспроизведение/пауза больше не работают.

person Jan S. Müller    schedule 24.02.2016