[Swift通天遁地]八、媒体与动画-(2)实现视频文件的播放和画中画

本文将演示使用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】激活视频播放的画中画模式。

模拟器启动后,开始播放项目中的视频文件,点击工具条右侧的画中画图标,切换至画中画模式。

进入画中画模式后,视频在屏幕中的一个浮动窗口中进行播放。

原文地址:https://www.cnblogs.com/strengthen/p/10353758.html

时间: 2024-10-11 19:02:55

[Swift通天遁地]八、媒体与动画-(2)实现视频文件的播放和画中画的相关文章

[Swift通天遁地]八、媒体与动画-(7)实现多个动画的顺序播放效果

本文将演示使用第三方类库,实现多个动画的顺序播放效果. 首先确保已经安装了所需的第三方类库.双击查看安装配置文件[Podfile] 1 platform :ios, '12.0' 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'Spring', :git => 'https://github.com/MengTo/Spring.git' 7 end

[Swift通天遁地]八、媒体与动画-(1)实现音频的播放和停止

本文将演示实现对音频播放的控制. 首先确保在项目中,已经安装了所需的第三方类库,点击查看安装的配置文件. 1 platform :ios, '8.0' 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'CryptoSwift', :git => "https://github.com/krzyzanowskim/CryptoSwift"

[Swift通天遁地]八、媒体与动画-(3)实现视频播放的水印、Overlay、暂停时插入广告等效果

本文将演示使用第三方类库实现视频视频播放的水印.Overlay.暂停时插入广告等效果. 首先确保在项目中,已经安装了所需的第三方类库,点击查看安装的配置文件. 1 platform :ios, '8.0' 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'MobilePlayer' 7 end 根据配置文件中的相关设置,安装第三方类库. 完成安装之后

[Swift通天遁地]八、媒体与动画-(6)使用开源类库快速实现滑入动画

本文将演示使用第三方类库,快速实现一个从上向下滑入的动画. 首先确保已经安装了所需的第三方类库.双击查看安装配置文件[Podfile] 1 platform :ios, '12.0' 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'Spring', :git => 'https://github.com/MengTo/Spring.git' 7 e

[Swift通天遁地]八、媒体与动画-(8)使用开源类库快速实现位移动画

本文将演示使用第三方类库,快速实现位移动画. 首先确保已经安装了所需的第三方类库.双击查看安装配置文件[Podfile] 1 platform :ios, '8.0' 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'Cheetah' 7 end 根据配置文件中的相关设置,安装第三方类库. 安装完成之后,双击打开项目文件[DemoApp.xcodep

[Swift通天遁地]八、媒体与动画-(9)快速实现复合、Label、延续、延时、重复、缓冲、弹性动画

本文将演示多种动画类型效果. 首先确保已经安装了所需的第三方类库.双击查看安装配置文件[Podfile] 1 platform :ios, '8.0' 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'Cheetah' 7 end 根据配置文件中的相关设置,安装第三方类库. 安装完成之后,双击打开项目文件[DemoApp.xcodeproj] 在左侧

[Swift通天遁地]八、媒体与动画-(10)在项目中播放GIF动画

本文将演示使用第三方类库播放GIF动画. 首先确保已经安装了所需的第三方类库.双击查看安装配置文件[Podfile] 1 platform :ios, '12.0' 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'SwiftGifOrigin', '~> 1.6.1' 7 end 根据配置文件中的相关设置,安装第三方类库. 安装完成之后,双击打开项

[Swift通天遁地]八、媒体与动画-(11)实现音乐播放的动态视觉效果

本文将演示使用第三方类库实现音乐播放的动态视觉效果. 首先确保已经安装了所需的第三方类库.双击查看安装配置文件[Podfile] 1 platform :ios, ‘12.0’ 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'AudioIndicatorBars' 7 end 根据配置文件中的相关设置,安装第三方类库. 安装完成之后,双击打开项目文

[Swift通天遁地]八、媒体与动画-(4)给相机添加CoreImage滤镜效果

本文将演示如何给相机添加实时的滤镜效果. 首先打开项目的配置文件[Info.plist],在空白区域点击鼠标右键,弹出右键菜单. 选择[Add Row]添加行命令,添加一行配置选项. 在[Key]键输入框输入相机的访问标识:[Application Category] 在[Value]值输入框输入当应用程序访问相机设备时的提示语: [Requires access to the camera] 在左侧的项目导航区,打开视图控制器的代码文件[ViewController.swift] 现在开始编写