здесь я добавляю точки, которые вам нужно настроить в зависимости от ваших потребностей.
Шаг 1
изначально скрыть элементы управления AVPlayer
,
YourAVPlayerViewController.showsPlaybackControls = false
Шаг 2
создать структуру, как
![введите описание изображения здесь](https://i.stack.imgur.com/kRtWF.png)
одна метка для текущей продолжительности, одна метка для общей продолжительности, одна кнопка пользовательского интерфейса для паузы и воспроизведения текущего плеера и одна UISlider для поиска видео.
шаг 3
изначально закрыть простые шаги.
сначала остановите и воспроизведите проигрыватель, используя действие кнопки, currentPlayer — это ваше имя AVPlayer.
@IBAction func handlePlayPauseButtonPressed(_ sender: UIButton) {
// sender.isSelected ? currentPlayer.pause() : currentPlayer.play()
if sender.isSelected {
currentPlayer.pause()
}
else {
currentPlayer.play()
}
}
во-вторых, установите продолжительность видео, например
let duration : CMTime = currentPlayer.currentItem!.asset.duration
let seconds : Float64 = CMTimeGetSeconds(duration)
lblOverallDuration.text = self.stringFromTimeInterval(interval: seconds)
в-третьих, установить текущее время игрока на текущую метку продолжительности
let duration : CMTime = currentPlayer.currentTime()
let seconds : Float64 = CMTimeGetSeconds(duration)
lblcurrentText.text = self.stringFromTimeInterval(interval: seconds)
следующий метод преобразуется из NSTimeinterval в HH:MM:SS
func stringFromTimeInterval(interval: TimeInterval) -> String {
let interval = Int(interval)
let seconds = interval % 60
let minutes = (interval / 60) % 60
let hours = (interval / 3600)
return String(format: "%02d:%02d:%02d", hours, minutes, seconds)
}
наконец, мы переходим к ползунку для расчета времени поиска
_playheadSlider.addTarget(self, action: #selector(self.handlePlayheadSliderTouchBegin), for: .touchDown)
_playheadSlider.addTarget(self, action: #selector(self.handlePlayheadSliderTouchEnd), for: .touchUpInside)
_playheadSlider.addTarget(self, action: #selector(self.handlePlayheadSliderTouchEnd), for: .touchUpOutside)
_playheadSlider.addTarget(self, action: #selector(self.handlePlayheadSliderValueChanged), for: .valueChanged)
давайте приступим к действию, сначала, когда touchbegin запустится, затем остановите плеер
ручкаPlayheadSliderTouchBegin
@IBAction func handlePlayheadSliderTouchBegin(_ sender: UISlider) {
currentPlayer.pause()
}
установить метку текущего элемента для расчета sender.value * CMTimeGetSeconds(currentPlayer.currentItem.duration)
@IBAction func handlePlayheadSliderValueChanged(_ sender: UISlider) {
let duration : CMTime = currentPlayer.currentItem!.asset.duration
let seconds : Float64 = CMTimeGetSeconds(duration) * sender.value
// var newCurrentTime: TimeInterval = sender.value * CMTimeGetSeconds(currentPlayer.currentItem.duration)
lblcurrentText.text = self.stringFromTimeInterval(interval: seconds)
}
наконец, переместите игрока на основе поиска
@IBAction func handlePlayheadSliderTouchEnd(_ sender: UISlider) {
let duration : CMTime = currentPlayer.currentItem!.asset.duration
var newCurrentTime: TimeInterval = sender.value * CMTimeGetSeconds(duration)
var seekToTime: CMTime = CMTimeMakeWithSeconds(newCurrentTime, 600)
currentPlayer.seek(toTime: seekToTime)
}
person
Anbu.Karthik
schedule
28.03.2017