Skip to content

Instantly share code, notes, and snippets.

@florianldt
Created February 2, 2020 03:07
Show Gist options
  • Save florianldt/d59301398178a083127eb34a0bce34c2 to your computer and use it in GitHub Desktop.
Save florianldt/d59301398178a083127eb34a0bce34c2 to your computer and use it in GitHub Desktop.
Queuing several video in AVQueuePlayer (for Playground)
import UIKit
import AVFoundation
import PlaygroundSupport
struct AVPlayerQueueBuilder {
static func from(_ urls: [URL]) -> [AVPlayerItem] {
return urls.map { return AVPlayerItem(url: $0) }
}
}
class QueuingVideoViewController: UIViewController {
let player: AVQueuePlayer = {
let items = AVPlayerQueueBuilder.from(Settings.videoUrls)
let player = AVQueuePlayer(items: items)
return player
}()
lazy var playerLayer = AVPlayerLayer(player: player)
enum Settings {
static let screenW: CGFloat = 375
static let playerHeight: CGFloat = Settings.screenW * (9/16)
static let videoUrls = [
URL(string: "http://download.appboomclap.co.kr/ad/ad_1.mp4")!,
URL(string: "http://download.appboomclap.co.kr/ad/ad_1.mp4")!,
]
}
let playerView: UIView = {
let view = UIView()
view.translatesAutoresizingMaskIntoConstraints = false
view.backgroundColor = .black
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .gray
navigationItem.title = "QueuingVideo"
navigationController?.navigationBar.isTranslucent = false
view.addSubview(playerView)
setupPlayerView()
player.play()
}
private func setupPlayerView() {
NSLayoutConstraint.activate([
playerView.topAnchor.constraint(equalTo: view.topAnchor),
playerView.leftAnchor.constraint(equalTo: view.leftAnchor),
playerView.rightAnchor.constraint(equalTo: view.rightAnchor),
playerView.heightAnchor.constraint(equalToConstant: Settings.playerHeight),
])
playerView.layer.addSublayer(playerLayer)
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
playerLayer.frame = playerView.bounds
}
}
let viewController = QueuingVideoViewController()
PlaygroundPage.current.liveView = viewController
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment