在 AVPlayer 中禁用时间搜索
Disable time seek in AVPlayer
我正在使用 AVPlayer 在 tvOS 中播放非常短的视频。现在,当我触摸遥控器时,视频的时间线就会出现,我可以快进和快退。有没有办法完全禁用它,即强制用户从头到尾查看剪辑而不能 forward/backward/pause/...?
您正在使用 AVPlayerViewController,如果您使用另一个 ViewController 并初始化一个 AVPlayer 并将其添加为子视图,您将无法获取时间。
如果您想禁用 play/pause,您可以覆盖 pressedEnded 中的 play/pause 按钮。
找到一个简单的解决方案:从 AVPlayerViewController 中,可以将 属性 showsPlaybackControls 设置为 false。因此,例如在构造函数中:
class PlayerViewController: AVPlayerViewController, AVPlayerViewControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
self.showsPlaybackControls = false
}
}
然后控件不再出现并且 forward/backward/play/pause 也不再工作。
yourPlayerController.requiresLinearPlayback = true
就可以了。
使用
self.playerController.setValue(true, forKey: "requiresLinearPlayback")
在 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)
}
我正在使用 AVPlayer 在 tvOS 中播放非常短的视频。现在,当我触摸遥控器时,视频的时间线就会出现,我可以快进和快退。有没有办法完全禁用它,即强制用户从头到尾查看剪辑而不能 forward/backward/pause/...?
您正在使用 AVPlayerViewController,如果您使用另一个 ViewController 并初始化一个 AVPlayer 并将其添加为子视图,您将无法获取时间。
如果您想禁用 play/pause,您可以覆盖 pressedEnded 中的 play/pause 按钮。
找到一个简单的解决方案:从 AVPlayerViewController 中,可以将 属性 showsPlaybackControls 设置为 false。因此,例如在构造函数中:
class PlayerViewController: AVPlayerViewController, AVPlayerViewControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
self.showsPlaybackControls = false
}
}
然后控件不再出现并且 forward/backward/play/pause 也不再工作。
yourPlayerController.requiresLinearPlayback = true
就可以了。
使用
self.playerController.setValue(true, forKey: "requiresLinearPlayback")
在 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)
}