Files
Woka_Native_iOS/WOKA/Karaoke/DumpFiles/AVPlayerVC.swift
2024-08-03 16:59:40 +05:30

266 lines
9.9 KiB
Swift

////
//// AVPlayerVC.swift
//// WOKA
////
//// Created by Bilal on 05/07/2024.
////
//
//import UIKit
//import AVFoundation
//
//class AVPlayerVC: UIViewController {
//
// @IBOutlet weak var viewControll: UIView!
// @IBOutlet weak var stackCtrView: UIStackView!
// @IBOutlet weak var loadingIndicator: UIActivityIndicatorView!
//
// @IBOutlet weak var sliderStack: UIStackView!
// @IBOutlet weak var tintView: UIView!
// @IBOutlet weak var videoTitle: UILabel!
//
// @IBOutlet weak var karaokeStack: UIStackView!
// @IBOutlet weak var playPauseRecordStack: UIStackView!
// @IBOutlet weak var karaokeLoading: UIActivityIndicatorView!
// @IBOutlet weak var reloadBtn: UIButton!
//
// @IBOutlet weak var img10SecBack: UIImageView! {
// didSet {
// self.img10SecBack.isUserInteractionEnabled = true
// self.img10SecBack.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(onTap10SecBack)))
// }
// }
// @IBOutlet weak var imgPlay: UIImageView! {
// didSet {
// self.imgPlay.isUserInteractionEnabled = true
// self.imgPlay.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(onTapPlayPause)))
// }
// }
// @IBOutlet weak var img10SecFor: UIImageView! {
// didSet {
// self.img10SecFor.isUserInteractionEnabled = true
// self.img10SecFor.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(onTap10SecNext)))
// }
// }
//
// @IBOutlet weak var lbCurrentTime: UILabel!
// @IBOutlet weak var lbTotalTime: UILabel!
//
//
// @IBOutlet weak var seekSlider: UISlider! {
// didSet {
// self.seekSlider.addTarget(self, action: #selector(onTapToSlide), for: .valueChanged)
// }
// }
//
// var videoURL : String?
// var titleVideo : String?
// var vm = AVPlayerVM()
//
// // MARK: - LifeCycle
//
// override func viewDidLoad() {
// super.viewDidLoad()
// vm.vc = self
// vm.initView()
// hideShowIndicator(isLoading: true)
//
// viewControll.addTapGesture {
// self.vm.timer?.invalidate()
// self.vm.showHideControls()
// }
// }
//
// override func viewDidAppear(_ animated: Bool) {
// self.vm.setVideoPlayer()
// }
//
// override func viewWillDisappear(_ animated: Bool) {
// super.viewWillDisappear(animated)
// self.vm.player?.pause()
// self.vm.player = nil
// }
//
// deinit {
// NotificationCenter.default.removeObserver(self)
// self.vm.player?.currentItem?.removeObserver(self, forKeyPath: "status")
//
// vm.player?.removeObserver(self, forKeyPath: "rate")
// if let playerItem = vm.player?.currentItem {
// playerItem.removeObserver(self, forKeyPath: "isPlaybackBufferEmpty")
// playerItem.removeObserver(self, forKeyPath: "isPlaybackLikelyToKeepUp")
// }
// }
//
// // MARK: - Button Clicks & Tap Handler
//
// @IBAction func reloadBtnTapped(_ sender: UIButton) {
// vm.isFinished = false
//
// vm.reloadVideo()
// }
//
// @IBAction func closeBtnTapped(_ sender: UIButton) {
// self.dismiss(animated: true)
// }
//
// @IBAction func startStopRecording(_ sender: LocalisedElementsButton) {
// }
//
// @IBAction func playPauseBtn(_ sender: LocalisedElementsButton) {
// }
//
// @objc func onTap10SecNext() {
// guard let currentTime = self.vm.player?.currentTime() else { return }
// let seekTime10Sec = CMTimeGetSeconds(currentTime).advanced(by: 10)
// let seekTime = CMTime(value: CMTimeValue(seekTime10Sec), timescale: 1)
// vm.timer?.invalidate()
// vm.timer = nil
// hideShowIndicator(isLoading: true)
//
// self.vm.player?.seek(to: seekTime, completionHandler: { [weak self] completed in
// if completed{
// guard let self else{return}
// hideShowIndicator(isLoading: false)
// vm.startTimer()
// }
// })
// }
//
// @objc func onTap10SecBack() {
// guard let currentTime = self.vm.player?.currentTime() else { return }
// vm.timer?.invalidate()
// vm.timer = nil
// hideShowIndicator(isLoading: true)
//
// let seekTime10Sec = CMTimeGetSeconds(currentTime).advanced(by: -10)
// let seekTime = CMTime(value: CMTimeValue(seekTime10Sec), timescale: 1)
// self.vm.player?.seek(to: seekTime, completionHandler: { [weak self] completed in
// if completed{
// guard let self else{return}
// hideShowIndicator(isLoading: false)
// vm.startTimer()
// }
// })
// }
//
// func hideShowIndicator(isLoading : Bool){
// if isLoading{
// self.imgPlay.isHidden = true
// self.loadingIndicator.startAnimating()
// }else{
// self.imgPlay.isHidden = false
// self.loadingIndicator.stopAnimating()
// self.loadingIndicator.hidesWhenStopped = true
// }
// }
//
// @objc func onTapPlayPause() {
// if self.vm.player?.timeControlStatus == .playing {
// self.imgPlay.image = UIImage(systemName: "play.circle")
// self.vm.player?.pause()
// } else {
// self.imgPlay.image = UIImage(systemName: "pause.circle")
// self.vm.player?.play()
// }
// }
//
// @objc func onTapToSlide() {
// if vm.timer != nil{
// vm.timer?.invalidate()
// vm.timer = nil
// }
// self.vm.isThumbSeek = true
// guard let duration = self.vm.player?.currentItem?.duration else { return }
// let value = Float64(self.seekSlider.value) * CMTimeGetSeconds(duration)
// if value.isNaN == false {
// let seekTime = CMTime(value: CMTimeValue(value), timescale: 1)
// self.vm.player?.seek(to: seekTime, completionHandler: { completed in
// if completed {
// self.vm.isThumbSeek = false
// self.vm.startTimer()
// }
// })
// }
// }
//
// override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
// if keyPath == "rate" {
// if let player = object as? AVPlayer {
// if player.rate == 0 {
// print("Player is paused")
// } else {
// print("Player is playing")
// hideShowIndicator(isLoading: false)
// imgPlay.image = UIImage(systemName: "pause.circle")
// }
// }
// } else if let playerItem = object as? AVPlayerItem {
// if keyPath == "isPlaybackBufferEmpty" {
// if playerItem.isPlaybackBufferEmpty {
// print("Loading")
// hideShowIndicator(isLoading: true)
// }
// } else if keyPath == "isPlaybackLikelyToKeepUp" {
// if playerItem.isPlaybackLikelyToKeepUp {
// print("finished")
// hideShowIndicator(isLoading: false)
// }
// }
// }
// }
//
//// // Observe for player item status changes
//// override func observeValue(forKeyPath keyPath: String?,
//// of object: Any?,
//// change: [NSKeyValueChangeKey : Any]?,
//// context: UnsafeMutableRawPointer?) {
//// if keyPath == "status" {
//// if let playerItem = object as? AVPlayerItem {
//// switch playerItem.status {
//// case .readyToPlay:
//// // Ready to play
//// print("Player item is ready to play.")
//// vm.player?.play()
//// hideShowIndicator(isLoading: false)
//// imgPlay.image = UIImage(systemName: "pause.circle")
//// case .failed:
//// // Failed
//// if let error = playerItem.error {
//// print("Player item error: \(error.localizedDescription)")
//// vm.handlePlayerError(error)
//// }
//// case .unknown:
//// // Unknown status
//// print("Player item status is unknown.")
//// @unknown default:
//// // Handle unexpected cases
//// print("Player item status is unknown.")
//// }
//// }
//// }
//// }
//
//// @objc private func onTapToggleScreen() {
//// if #available(iOS 16.0, *) {
//// guard let windowSceen = self.view.window?.windowScene else { return }
//// if windowSceen.interfaceOrientation == .portrait {
//// windowSceen.requestGeometryUpdate(.iOS(interfaceOrientations: .landscape)) { error in
//// print(error.localizedDescription)
//// }
//// } else {
//// windowSceen.requestGeometryUpdate(.iOS(interfaceOrientations: .portrait)) { error in
//// print(error.localizedDescription)
//// }
//// }
//// } else {
//// if UIDevice.current.orientation == .portrait {
//// let orientation = UIInterfaceOrientation.landscapeRight.rawValue
//// UIDevice.current.setValue(orientation, forKey: "orientation")
//// } else {
//// let orientation = UIInterfaceOrientation.portrait.rawValue
//// UIDevice.current.setValue(orientation, forKey: "orientation")
//// }
//// }
//// }
//}