Swift/AVReaderWriter/StartViewController.swift
/* |
Copyright (C) 2016 Apple Inc. All Rights Reserved. |
See LICENSE.txt for this sample’s licensing information |
Abstract: |
Defines the view controller for the default scene. |
*/ |
import AVFoundation |
import AVKit |
class StartViewController: UIViewController { |
// MARK: Properties |
@IBOutlet weak var startButton: UIButton! |
let player = AVPlayer() |
var sourceURL: NSURL? { |
// Update `playerViewController` with new source movie. |
didSet { |
let playerItem: AVPlayerItem? |
if let sourceURL = sourceURL { |
playerItem = AVPlayerItem(URL: sourceURL) |
startButton.enabled = true |
} |
else { |
playerItem = nil |
startButton.enabled = false |
} |
player.replaceCurrentItemWithPlayerItem(playerItem) |
} |
} |
let defaultSourceURL = NSBundle.mainBundle().URLForResource("ElephantSeals", withExtension: "mov")! |
let outputURL = NSURL(fileURLWithPath: NSTemporaryDirectory() + "out.mov") |
static let embedSegueName = "playerViewController" |
// MARK: View Controller |
override func viewDidLoad() { |
super.viewDidLoad() |
// Default to disabled, until we establish a source. |
startButton.enabled = false |
// Establish a source. |
sourceURL = defaultSourceURL |
} |
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { |
if segue.identifier == StartViewController.embedSegueName { |
// This segue fires before `viewDidLoad()` is invoked. |
let playerViewController = segue.destinationViewController as! AVPlayerViewController |
playerViewController.player = player |
} |
else { |
// Stop playback when transitioning to next scene. |
player.pause() |
let nextViewController = segue.destinationViewController as! ProgressViewController |
/* |
We cannot get here if there is no source, because `startButton` |
will be disabled. |
*/ |
nextViewController.sourceURL = sourceURL |
nextViewController.outputURL = outputURL |
} |
} |
} |
Copyright © 2016 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2016-09-13