[Swift通天遁地]八、媒体与动画-(2)实现视频文件的播放和画中画
发布时间:2020-12-14 05:04:29 所属栏目:百科 来源:网络整理
导读:本文将演示使用AVPlayerViewController播放视频并实现画中画。 往项目中导入了一个视频文件。 在左侧的项目导航区,打开视图控制器的代码文件【ViewController.swift】? 1 import UIKit 2 // 在当前的类文件中, 3 // 引入需要用到的相关类库 4 import AVFou
本文将演示使用AVPlayerViewController播放视频并实现画中画。 往项目中导入了一个视频文件。 在左侧的项目导航区,打开视图控制器的代码文件【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】,进入项目属性设置面板。 点击【Capabilities】能力标签,进入项目功能开启面板。 点击右侧的垂直滚动条,点击【Background Modes】设置为【ON】 勾选【Audio、AirPlay、and Picture in Picture】激活视频播放的画中画模式。 模拟器启动后,开始播放项目中的视频文件,点击工具条右侧的画中画图标,切换至画中画模式。 进入画中画模式后,视频在屏幕中的一个浮动窗口中进行播放。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |