zoukankan      html  css  js  c++  java
  • [Swift通天遁地]八、媒体与动画-(2)实现视频文件的播放和画中画

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(shanqingyongzhi)
    ➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/10353758.html 
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    目录:[Swift]通天遁地Swift

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

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

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

  • 相关阅读:
    TRAC-IK机器人运动学求解器
    机器人关节空间轨迹规划--S型速度规划
    机械臂运动学逆解(Analytical solution)
    Windows中读写ini文件
    glog日志库使用笔记
    V-rep学习笔记:切削
    机器人单关节力矩控制
    机器人中的轨迹规划(Trajectory Planning )
    DDD Example
    clearing & settlement
  • 原文地址:https://www.cnblogs.com/strengthen/p/10353758.html
Copyright © 2011-2022 走看看