Я использую AVPlayer для воспроизведения очень коротких видео в tvOS. В тот момент, когда я касаюсь пульта, появляется временная шкала видео, и я могу быстро перематывать вперед и назад. Есть ли способ полностью отключить это, то есть заставить пользователя просматривать клип от начала до конца без возможности перемотки вперед/назад/пауза/...?
Отключить поиск по времени в AVPlayer
Ответы (5)
yourPlayerController.requiresLinearPlayback = true
сделает свое дело.
Использовать
self.playerController.setValue(true, forKey: "requiresLinearPlayback")
В 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)
}
Вы используете AVPlayerViewController, если вы используете другой ViewController и инициализируете AVPlayer и добавляете его в качестве подпредставления, вы не получите поиск времени.
Если вы хотите отключить воспроизведение/паузу, вы можете переопределить кнопку воспроизведения/паузы в pressedEnded.
Нашел простое решение проблемы: из AVPlayerViewController можно установить для свойства showPlaybackControls значение false. Так, например, в конструкторе:
class PlayerViewController: AVPlayerViewController, AVPlayerViewControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
self.showsPlaybackControls = false
}
}
Затем элементы управления больше не появляются, а вперед/назад/воспроизведение/пауза больше не работают.