- Можно ли добавить настраиваемую скорость воспроизведения (0,5, 1,0, 1,5, 2,0) в
AVPlayerViewController
? - Есть ли способ обновить частоту обновления, изменив значение
UISlider
? - Можно ли изменить скорость воспроизведения, если оно воспроизводится в данный момент?
Пользовательский контроль скорости воспроизведения для AVPlayerViewController
Ответы (1)
- Можно ли добавить настраиваемую скорость воспроизведения (0,5, 1,0, 1,5, 2,0) в
AVPlayerViewController
?
Вы можете добавить кнопку настраиваемой скорости воспроизведения в AVPlayerViewController
, немного взломав.
В iOS 11, то есть вы можете добавить кнопку к AVPlayerViewController
, добавив элемент управления рядом с кнопкой «Воспроизведение / Пауза». У этой кнопки есть доступный идентификатор, который поможет вам найти этот элемент управления.
Итак, я в основном нашел кнопку «Воспроизведение / Пауза» и добавил мою кнопку «Скорость воспроизведения» в супервизор кнопки «Воспроизведение / Пауза».
func findPlayPauseButton(view: UIView) -> UIView? {
if view.accessibilityIdentifier == "Play/Pause" {
return view
}
for subview in view.subviews {
if let result = findPlayPauseButton(view: subview) {
return result
}
}
return nil
}
guard let playerView = playerViewController?.view else {
return
}
guard let playPauseButton = findPlayPauseButton(view: playerView) else {
return
}
if let playerControlsView = playPauseButton.superview {
let playbackSpeedButton = UIButton(type: .system)
playbackSpeedButton.accessibilityIdentifier = "PlaybackSpeed"
playbackSpeedButton.setTitle("1 X", for: .normal)
playbackSpeedButton.addTarget(self, action: #selector(self.playbackSpeedButtonTapped), for: .touchUpInside)
playbackSpeedButton.translatesAutoresizingMaskIntoConstraints = false
playerControlsView.addSubview(playbackSpeedButton)
NSLayoutConstraint.activate([
playbackSpeedButton.heightAnchor.constraint(equalTo: playPauseButton.heightAnchor),
playbackSpeedButton.widthAnchor.constraint(equalToConstant: 50),
playbackSpeedButton.leadingAnchor.constraint(equalTo: playPauseButton.trailingAnchor, constant: 70),
playbackSpeedButton.bottomAnchor.constraint(equalTo: playPauseButton.bottomAnchor),
])
}
Результат:
Как вы, возможно, знаете, у этого есть много недостатков из-за всех крайних случаев, которые вы найдете, то есть вам также нужно позаботиться о ландшафте, вам нужно проверить, действует ли взлом в каждой новой версии iOS, и т. д. Если ваше приложение поддерживает iOS 10, тогда все будет по-другому, потому что пользовательский интерфейс AVPlayerViewController
изменился в iOS 11.
- Есть ли способ обновить скорость с помощью изменения значения UISlider?
Да, вместо UIButton
для изменения скорости воспроизведения просто добавьте UISlider
.
- Можно ли изменить скорость воспроизведения, если оно воспроизводится в данный момент?
Да, если он играет, вам просто нужно изменить свойство rate
для игрок: например на 1.25 X => playerViewController.player?.rate = 1.25
.
ОБНОВИТЬ:
Требуется улучшение! ???? Номер радара: 46022646: Контроль скорости воспроизведения для AVPlayerViewController (видео).
AVPlayerViewController
настраиваемый регулятор скорости воспроизведения? - person ricardopereira   schedule 07.11.2018