Created
February 2, 2020 03:07
-
-
Save florianldt/d59301398178a083127eb34a0bce34c2 to your computer and use it in GitHub Desktop.
Queuing several video in AVQueuePlayer (for Playground)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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