Изучение AVPlayer в Swift: воспроизведение видео с примером кода

Если вы разработчик iOS и хотите включить воспроизведение видео в свое приложение Swift, в вашем распоряжении есть мощный инструмент — AVPlayer. В этой статье мы погрузимся в мир AVPlayer и рассмотрим различные способы воспроизведения видео с использованием примера кода. Итак, возьмите свой любимый напиток и начнем!

Метод 1: базовое воспроизведение видео
Давайте начнем с основного метода воспроизведения видео с помощью AVPlayer. Сначала импортируйте фреймворк AVFoundation в файл Swift:

import AVFoundation

Далее создайте экземпляр AVPlayer и AVPlayerLayer:

let videoURL = URL(string: "https://example.com/video.mp4")!
let player = AVPlayer(url: videoURL)
let playerLayer = AVPlayerLayer(player: player)

Чтобы отобразить видео, добавьте playerLayer на слой вашего представления:

playerLayer.frame = view.bounds
view.layer.addSublayer(playerLayer)

Наконец, воспроизведите видео:

player.play()

” с фактическим URL-адресом вашего видео.

Метод 2. Добавление элементов управления воспроизведением
Чтобы улучшить взаимодействие с пользователем, вы можете добавить элементы управления воспроизведением, такие как кнопки воспроизведения, паузы и поиска. Вот пример того, как этого добиться:

let playButton = UIButton(type: .system)
playButton.setTitle("Play", for: .normal)
playButton.addTarget(self, action: #selector(playButtonTapped), for: .touchUpInside)
let pauseButton = UIButton(type: .system)
pauseButton.setTitle("Pause", for: .normal)
pauseButton.addTarget(self, action: #selector(pauseButtonTapped), for: .touchUpInside)
let seekSlider = UISlider()
seekSlider.addTarget(self, action: #selector(seekSliderValueChanged), for: .valueChanged)
// Implement button actions and slider value changed handler
@objc func playButtonTapped() {
    player.play()
}
@objc func pauseButtonTapped() {
    player.pause()
}
@objc func seekSliderValueChanged() {
    let time = CMTime(seconds: Double(seekSlider.value), preferredTimescale: 1)
    player.seek(to: time)
}

Метод 3: наблюдение за состоянием воспроизведения
Вы также можете наблюдать за состоянием воспроизведения AVPlayer с помощью наблюдения за ключом и значением (KVO). Вот как это можно реализовать:

// Add observer for playback status
player.addObserver(self, forKeyPath: "status", options: [.new, .initial], context: nil)
// Implement the observer method
override func observeValue(forKeyPath keyPath: String?, of object: Any?,
                           change: [NSKeyValueChangeKey: Any]?, context: UnsafeMutableRawPointer?) {
    if keyPath == "status" {
        if let status = player.status {
            if status == .readyToPlay {
                // Player is ready to play
            } else if status == .failed {
                // Player failed to load the video
            }
        }
    }
}
// Don't forget to remove the observer when you're done
player.removeObserver(self, forKeyPath: "status")

В этой статье мы рассмотрели различные способы воспроизведения видео с помощью AVPlayer в Swift. Мы начали с базового воспроизведения видео, добавили элементы управления воспроизведением, такие как кнопки воспроизведения и паузы, и научились наблюдать за состоянием воспроизведения с помощью KVO. Используя возможности AVPlayer, вы можете создавать потрясающие возможности видео в своих приложениях iOS.

Не забудьте обратиться к официальной документации Apple, чтобы узнать о более продвинутых функциях и возможностях настройки AVPlayer. Приятного кодирования!