mirror of
https://github.com/samsonjs/SwiftyCam.git
synced 2026-03-25 09:05:52 +00:00
92 lines
3.6 KiB
Swift
92 lines
3.6 KiB
Swift
/*Copyright (c) 2016, Andrew Walz.
|
|
|
|
Redistribution and use in source and binary forms, with or without modification,are permitted provided that the following conditions are met:
|
|
|
|
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
|
|
|
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the
|
|
documentation and/or other materials provided with the distribution.
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
|
|
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
|
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
|
|
|
|
import UIKit
|
|
import AVFoundation
|
|
import AVKit
|
|
|
|
class VideoViewController: UIViewController {
|
|
|
|
override var prefersStatusBarHidden: Bool {
|
|
return true
|
|
}
|
|
|
|
private var videoURL: URL
|
|
var player: AVPlayer?
|
|
var playerController : AVPlayerViewController?
|
|
|
|
init(videoURL: URL) {
|
|
self.videoURL = videoURL
|
|
super.init(nibName: nil, bundle: nil)
|
|
}
|
|
|
|
required init?(coder aDecoder: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
self.view.backgroundColor = UIColor.gray
|
|
player = AVPlayer(url: videoURL)
|
|
playerController = AVPlayerViewController()
|
|
|
|
guard player != nil && playerController != nil else {
|
|
return
|
|
}
|
|
playerController!.showsPlaybackControls = false
|
|
|
|
playerController!.player = player!
|
|
self.addChildViewController(playerController!)
|
|
self.view.addSubview(playerController!.view)
|
|
playerController!.view.frame = view.frame
|
|
NotificationCenter.default.addObserver(self, selector: #selector(playerItemDidReachEnd), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: self.player!.currentItem)
|
|
|
|
let cancelButton = UIButton(frame: CGRect(x: 10.0, y: 10.0, width: 30.0, height: 30.0))
|
|
cancelButton.setImage(#imageLiteral(resourceName: "cancel"), for: UIControlState())
|
|
cancelButton.addTarget(self, action: #selector(cancel), for: .touchUpInside)
|
|
view.addSubview(cancelButton)
|
|
|
|
|
|
// Allow background audio to continue to play
|
|
do {
|
|
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient)
|
|
} catch let error as NSError {
|
|
print(error)
|
|
}
|
|
|
|
do {
|
|
try AVAudioSession.sharedInstance().setActive(true)
|
|
} catch let error as NSError {
|
|
print(error)
|
|
}
|
|
}
|
|
|
|
override func viewDidAppear(_ animated: Bool) {
|
|
super.viewDidAppear(animated)
|
|
player?.play()
|
|
}
|
|
|
|
@objc func cancel() {
|
|
dismiss(animated: true, completion: nil)
|
|
}
|
|
|
|
@objc fileprivate func playerItemDidReachEnd(_ notification: Notification) {
|
|
if self.player != nil {
|
|
self.player!.seek(to: kCMTimeZero)
|
|
self.player!.play()
|
|
}
|
|
}
|
|
}
|