DAY 26 『 AVPlayerViewController - 播放影片 』

今天要分享的是,如何用 AVPlayerViewController 显示影片

成品:
{%youtube wCKodbvifQM %}

快速介绍 AVFoundation、AVKit:

  • AVFoundation:
    处理基於时间的视听媒体。
    可以轻松播放、创建和编辑 QuickTime 电影和 MPEG-4 文件,支援 HLS ( HTTP Live Streaming 媒体传输协议 ),并在应用程序中构建强大的媒体功能。

  • AVKit:
    基於 AVFoundation 框架,提供播放影片内容的介面、建立媒体播放服务。
    主要包含 AVPictureInPictureController、AVPlayViewController


在 project 加入影片档

从 storyboard 设计画面

由於 AVPlayerViewController 来自 AVKit,因此必须import AVKit
此外 AVKit 基於 AVFoundation 框架,因此必须import AVFoundation

在 @IBAction 设定 AVPlayerViewController 的播放影片,因为有三个 Button ,因此用 switch 判断按到哪一个 Button 。

@IBAction func didTapButton (btn: UIButton){
    switch btn {
    case btn1:
        let player1 = AVPlayer(url: URL(fileURLWithPath: Bundle.main.path(forResource: "151", ofType: "mov")!))
        let vc1 = AVPlayerViewController()
        vc1.player = player1
        present(vc1, animated: true)
    case btn2:
        let player2 = AVPlayer(url: URL(fileURLWithPath: Bundle.main.path(forResource: "152", ofType: "mov")!))
        let vc2 = AVPlayerViewController()
        vc2.player = player2
        present(vc2, animated: true)
    default:
        let player3 = AVPlayer(url: URL(fileURLWithPath: Bundle.main.path(forResource: "swag", ofType: "mov")!))
        let vc3 = AVPlayerViewController()
        vc3.player = player3
        present(vc3, animated: true)
    }
}

forResource: "影片名称"
ofType: "档案格式"


附上完整程序码

import UIKit
import AVKit
import AVFoundation

class MainVC: UIViewController {
    
    @IBOutlet weak var btn1: UIButton!
    @IBOutlet weak var btn2: UIButton!
    @IBOutlet weak var btn3: UIButton!

    override func viewDidLoad() {
        super.viewDidLoad()
        self.navigationController?.setNavigationBarHidden(true, animated: false) // 隐藏指示条
    }

    @IBAction func didTapButton (btn: UIButton){
        switch btn {
        case btn1:
            let player1 = AVPlayer(url: URL(fileURLWithPath: Bundle.main.path(forResource: "151", ofType: "mov")!))
            let vc1 = AVPlayerViewController()
            vc1.player = player1
            present(vc1, animated: true)
        case btn2:
            let player2 = AVPlayer(url: URL(fileURLWithPath: Bundle.main.path(forResource: "152", ofType: "mov")!))
            let vc2 = AVPlayerViewController()
            vc2.player = player2
            present(vc2, animated: true)
        default:
            let player3 = AVPlayer(url: URL(fileURLWithPath: Bundle.main.path(forResource: "swag", ofType: "mov")!))
            let vc3 = AVPlayerViewController()
            vc3.player = player3
            present(vc3, animated: true)
        }
    }
}


这样就完成显示影片啦!明天会分享新的实作,敬请期待!


<<:  Day 23 - Spring AOP

>>:  30天打造品牌特色电商网站 Day.22 图片排版实作

理解 HTTP(二):Method、Status Code

昨天大致谈了网站内容是怎麽被下载到电脑里的,今天稍微深入一点聊聊关於 HTTP 这个协定的一些简单并...

【Day30】函式常见的陷阱题

今天来讲解 this 相关的陷阱题 第一题 myName = '全域'; var person = ...

Day03 - Visual Studio Code安装Python插件

经过Day02的流程,我们已经可以使用Windows内建的文字编辑器搭配「命令提示字元」进行pyth...

第44篇-df命令

今天进度 : 鸟哥的 Linux 私房菜 -- 连上 Internet 的方法与步骤 尝试使用 df...

iTunes 音乐

假如可以随时随地随心地聆听歌曲就好了!那怎麽将 iTunes 音乐存放在不同的设备中,让它在不同的音...