[Swift通天遁地]8、媒體與動畫-(2)實現視頻文件的播放和畫中畫

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(shanqingyongzhi)
➤博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:http://www.javashuo.com/article/p-ekijiijx-mc.html 
➤若是連接不是山青詠芝的博客園地址,則多是爬取做者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持做者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html

目錄:[Swift]通天遁地Swiftgit

本文將演示使用AVPlayerViewController播放視頻並實現畫中畫。github

往項目中導入了一個視頻文件。swift

在左側的項目導航區,打開視圖控制器的代碼文件【ViewController.swift】 微信

 1 import UIKit
 2 //在當前的類文件中,
 3 //引入須要用到的相關類庫
 4 import AVFoundation
 5 import AVKit
 6 
 7 class ViewController: UIViewController, AVPlayerViewControllerDelegate {
 8     
 9     var playerVC : AVPlayerViewController!
10     override func viewDidLoad() {
11         super.viewDidLoad()
12         // Do any additional setup after loading the view, typically from a nib.
13         
14         //得到視頻文件在項目中的路徑。
15         let moviePath = Bundle.main.path(forResource: "Sunrise", ofType: "mp4")
16         //將視頻路徑轉換成網址對象。
17         let movieURL = URL(fileURLWithPath: moviePath!)
18         //初始化一個視頻播放器,播放指定的視頻文件
19         let avPlayer = AVPlayer(url: movieURL as URL)
20         
21         //let view = UIView(frame: CGRect(x: 20, y: 180, width: 100, height: 100))
22         //view.backgroundColor = .orange
23         //self.view.addSubview(view)
24         
25         //初始化一個視頻播放控制器
26         playerVC = AVPlayerViewController()
27         //設置控制器對象的播放屬性
28         playerVC.player = avPlayer
29         //保持視頻的寬高比,並使播放內容自動適應播放窗口的大小
30         playerVC.videoGravity = AVLayerVideoGravity.resizeAspect
31         //設置在特定的設備上,容許畫中畫模式
32         playerVC.allowsPictureInPicturePlayback = true
33         //在視頻播放時,顯示播放控制功能區
34         playerVC.showsPlaybackControls = true
35         //設置播放器的顯示區域,保持和根視圖的顯示區域相同
36         playerVC.view.frame = self.view.bounds
37         //設置播放器的代理對象爲自己
38         playerVC.delegate = self
39         
40         //經過調用播放器的播放方法,開始播放視頻文件。
41         playerVC.player!.play()
42         //self.view.insertSubview(playerVC.view, belowSubview: view)
43         //將視圖播放器視圖,添加到根視圖中
44         self.view.addSubview(playerVC.view)
45         
46         NotificationCenter.default.addObserver(self, selector: #selector(ViewController.playEnd(notification:)), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: nil)
47     }
48     
49     func playerViewControllerDidStartPictureInPicture(_ playerViewController: AVPlayerViewController) {
50         print("playerViewControllerDidStartPictureInPicture")
51     }
52     
53     @objc func playEnd(notification: Notification)
54     {
55         print("playEnd")
56         print(playerVC.player?.currentTime() as Any)
57         playerVC.player?.seek(to: CMTime(seconds: 1.0, preferredTimescale: CMTimeScale(NSEC_PER_SEC)))
58         playerVC.player!.play()
59     }
60 
61     override func didReceiveMemoryWarning() {
62         super.didReceiveMemoryWarning()
63         // Dispose of any resources that can be recreated.
64     }
65 }

點擊項目名稱【DemoApp】,進入項目屬性設置面板ide

點擊【Capabilities】能力標籤,進入項目功能開啓面板。工具

點擊右側的垂直滾動條,點擊【Background Modes】設置爲【ON】post

勾選【Audio、AirPlay、and Picture in Picture】激活視頻播放的畫中畫模式。動畫

模擬器啓動後,開始播放項目中的視頻文件,點擊工具條右側的畫中畫圖標,切換至畫中畫模式。url

進入畫中畫模式後,視頻在屏幕中的一個浮動窗口中進行播放。

相關文章
相關標籤/搜索