Swiftで動画再生のたった10の方法

Swiftで動画再生の方法を詳しく解説するイメージSwift
この記事は約30分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればサンプルコードを活用して機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

皆さん、動画再生ってどれくらい詳しく知っていますか?

Swiftを使用して、iOSアプリで動画を再生する方法は数多く存在します。

しかし、初めてSwiftを使って動画を再生しようと思った方や、すでに使っているけれども更に詳しく知りたいと思っている方も多いのではないでしょうか。

この記事では、Swiftで動画を再生するための10の実践的な方法を徹底解説します。

この記事を読めば、Swiftを使った動画再生の手法を10通り身につけることができるようになります。

それぞれの方法について、詳細な説明とサンプルコードを交えて解説していきますので、初心者から中級者の方まで、Swiftでの動画再生に関するスキルを効率よく向上させることができます。

●Swiftとは?

SwiftはAppleが開発したプログラミング言語です。

iOS、macOS、watchOS、tvOSなど、Appleの各デバイス向けのアプリケーション開発に使用されています。

その特長として、安全性、高速性、直感的なシンタックスなどが挙げられます。

○Swiftの基本概要

Swiftは、2014年にAppleが公開した比較的新しい言語です。

Objective-Cという古い言語の後継として誕生し、多くの開発者に愛されるようになりました。

特に、シンプルで読みやすいコードが書けることや、実行速度が速いことが大きな魅力となっています。

Swiftの大きな特徴として、Optional型の導入や、型推論を強化したことで、安全かつ効率的なコードを書くことができるようになっています。

また、Playgroundという機能を使用することで、リアルタイムにコードの動作を確認しながら開発を進めることができるのも大きな特長です。

このコードでは、Swiftの変数宣言と文字列の出力を行っています。

この例では、”Hello, Swift!”という文字列をprint関数を使って出力しています。

let greeting = "Hello, Swift!"
print(greeting)

このコードを実行すると、画面には”Hello, Swift!”と表示されます。

○動画再生におけるSwiftの利点

動画再生の実装においても、Swiftは多くの利点を持っています。

ここでは、その主な利点をいくつか挙げてみます。

  1. 豊富なライブラリ:Swiftは、AVFoundationやMediaPlayerなど、動画や音声を再生するための豊富なライブラリを持っています。これにより、高度な動画再生の機能も比較的簡単に実装することができます。
  2. 高いパフォーマンス:Swiftはコンパイル言語であり、実行速度が速いため、スムーズな動画再生を実現することができます。
  3. 安全性:Swiftの言語設計上、エラーを早期にキャッチしやすい特性があります。これにより、バグやクラッシュを減少させ、安定した動画再生を提供することができます。

●Swiftでの動画再生の方法

動画再生は現代のアプリケーションにおいて、必要不可欠な機能となっています。

特にiOSデバイスでは、ユーザーエクスペリエンスを高めるためにスムーズな動画再生が求められます。

Swiftを利用した動画再生の方法はさまざま。

ここでは、その中から10の主要な方法をピックアップして詳しく解説していきます。

○サンプルコード1:AVPlayerを使用した基本的な動画再生

最初に取り上げるのは、Swiftにおける動画再生の基本であるAVPlayerを用いた方法です。

AVPlayerは、動画や音声の再生を行うためのクラスで、AVFoundationフレームワークに含まれています。

このコードでは、AVPlayerAVPlayerLayerを使用して、指定したURLから動画をロードして再生する機能を実装しています。

import AVFoundation
import UIKit

class ViewController: UIViewController {

    var player: AVPlayer!

    override func viewDidLoad() {
        super.viewDidLoad()

        // 動画のURLを指定
        if let url = URL(string: "https://サンプルURL.com/サンプル動画.mp4") {
            player = AVPlayer(url: url)

            // AVPlayerLayerを使って動画を再生
            let playerLayer = AVPlayerLayer(player: player)
            playerLayer.frame = self.view.bounds
            self.view.layer.addSublayer(playerLayer)

            // 動画の再生を開始
            player.play()
        }
    }
}

この例では、指定したURLの動画をアプリ内でロードして再生しています。

コードを実行すると、指定されたURLの動画が画面全体に表示され、自動的に再生が始まります。

○サンプルコード2:AVPlayerViewControllerのカスタマイズ

次に、AVPlayerViewControllerを用いた動画再生のカスタマイズ方法を紹介します。

AVPlayerViewControllerは、動画再生のUIを含むビューコントローラで、再生や一時停止などの操作が簡単に実装できます。

このコードでは、AVPlayerViewControllerを使用して、動画再生時の操作バーをカスタマイズしています。

import AVKit
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func playVideoButtonTapped(_ sender: UIButton) {
        if let url = URL(string: "https://サンプルURL.com/サンプル動画.mp4") {
            let player = AVPlayer(url: url)
            let playerViewController = AVPlayerViewController()
            playerViewController.player = player

            // オペレーションバーを非表示にする
            playerViewController.showsPlaybackControls = false

            present(playerViewController, animated: true) {
                playerViewController.player?.play()
            }
        }
    }
}

この例では、動画再生時の操作バーを非表示にしています。

コードを実行すると、指定されたURLの動画が再生される際、操作バーが表示されずに再生が始まります。

○サンプルコード3:動画のリピート再生設定

動画コンテンツを用いる際、特定のシーンやプロモーション動画を繰り返し再生したい場面もあるでしょう。

Swiftでの動画リピート再生は、非常にシンプルに設定できます。

ここでは、AVPlayerを用いて動画のリピート再生を実装する方法を詳細に解説します。

このコードでは、AVPlayerItemDidPlayToEndTimeの通知を利用して、動画再生が終了した際に動画を再度再生する処理を行います。

import AVFoundation
import UIKit

class ViewController: UIViewController {

    var player: AVPlayer!

    override func viewDidLoad() {
        super.viewDidLoad()

        // 動画のURLを指定
        if let url = URL(string: "https://サンプルURL.com/サンプル動画.mp4") {
            player = AVPlayer(url: url)

            // AVPlayerの再生終了時の通知を受け取る
            NotificationCenter.default.addObserver(self, selector: #selector(playerDidFinishPlaying), name: .AVPlayerItemDidPlayToEndTime, object: player.currentItem)

            // 動画再生
            player.play()
        }
    }

    @objc func playerDidFinishPlaying(note: NSNotification) {
        // 動画再生を初めから再開
        player.seek(to: CMTime.zero)
        player.play()
    }
}

この例では、動画が再生終了するたびに、playerDidFinishPlayingメソッドが呼ばれ、動画を最初から再生するようにしています。

このようにシンプルな処理を追加するだけで、動画のリピート再生を実現できます。

○サンプルコード4:動画の再生速度を変更する

アプリ内の動画再生では、ユーザーが再生速度を調整したい場面も考えられます。

例えば、教育用の動画では、内容をじっくり理解するために遅めの速度で再生したい、あるいは概要をざっと確認するために早めの速度で再生したいといったニーズがあります。

SwiftではAVPlayerrateプロパティを使用して、再生速度を簡単に調整することができます。

このコードでは、AVPlayerrateプロパティを変更して、動画の再生速度を調整する方法を表しています。

import AVFoundation
import UIKit

class ViewController: UIViewController {

    var player: AVPlayer!

    override func viewDidLoad() {
        super.viewDidLoad()

        // 動画のURLを指定
        if let url = URL(string: "https://サンプルURL.com/サンプル動画.mp4") {
            player = AVPlayer(url: url)

            // 動画再生速度を1.5倍に設定
            player.rate = 1.5

            // 動画再生
            player.play()
        }
    }
}

この例では、指定したURLの動画を1.5倍の速度で再生しています。

rateプロパティの値を変更することで、再生速度を任意に調整することができます。

1.0が通常速度で、この値を上げることで再生速度が早くなり、下げることで遅くなります。

○サンプルコード5:動画のミュート設定

アプリ内の動画を再生する際、音声をミュートにすることで、ユーザー体験を向上させることができます。

例えば、バックグラウンドでの動画再生や、音声を必要としない場面などでの使用を想定しています。

SwiftではAVPlayerisMutedプロパティを使用することで、簡単に動画の音声をミュートに設定することができます。

このコードでは、AVPlayerisMutedプロパティを使って、動画の音声をミュートにする方法を実装しています。

import AVFoundation
import UIKit

class ViewController: UIViewController {

    var player: AVPlayer!

    override func viewDidLoad() {
        super.viewDidLoad()

        // 動画のURLを指定
        if let url = URL(string: "https://サンプルURL.com/サンプル動画.mp4") {
            player = AVPlayer(url: url)

            // 動画の音声をミュートに設定
            player.isMuted = true

            // 動画再生
            player.play()
        }
    }
}

この例では、指定したURLの動画をミュート設定で再生しています。

isMutedプロパティの値をtrueに設定することで、音声をオフにし、falseに設定することで、音声をオンにすることができます。

○サンプルコード6:動画の一時停止と再開

動画再生の際には、ユーザーが一時停止や再開を行いたい場面も多くあります。

このような基本的な操作も、SwiftのAVPlayerを使用することで簡単に実装することができます。

このコードでは、AVPlayerplayメソッドとpauseメソッドを使って、動画の再生と一時停止を行う方法を実装しています。

import AVFoundation
import UIKit

class ViewController: UIViewController {

    var player: AVPlayer!

    override func viewDidLoad() {
        super.viewDidLoad()

        // 動画のURLを指定
        if let url = URL(string: "https://サンプルURL.com/サンプル動画.mp4") {
            player = AVPlayer(url: url)

            // 動画再生
            player.play()
        }

        // 任意のタイミングで動画を一時停止
        player.pause()

        // 任意のタイミングで動画を再開
        player.play()
    }
}

この例では、指定したURLの動画を再生した後、一時停止し、再度再生する処理を行っています。

pauseメソッドを使用することで動画を一時停止し、playメソッドを使用することで動画を再生することができます。

○サンプルコード7:動画の途中から再生

動画コンテンツは、ユーザーが特定のシーンから視聴したいという要望がしばしばあります。

例えば、ある動画の特定のシーンを繰り返し見たい、前回の視聴位置から再開したいなど、様々なシチュエーションで中断地点からの再生が求められます。

Swiftを使用した開発では、AVPlayerseekメソッドを活用することで、このような要求に応えることができます。

このコードでは、AVPlayerseekメソッドを使って、動画を特定の時間から再生する方法を実装しています。

import AVFoundation
import UIKit

class ViewController: UIViewController {

    var player: AVPlayer!

    override func viewDidLoad() {
        super.viewDidLoad()

        // 動画のURLを指定
        if let url = URL(string: "https://サンプルURL.com/サンプル動画.mp4") {
            player = AVPlayer(url: url)

            // 動画を2分30秒の位置から再生する
            let startTime = CMTimeMakeWithSeconds(150, preferredTimescale: 1)
            player.seek(to: startTime)

            // 動画再生
            player.play()
        }
    }
}

この例では、指定したURLの動画を2分30秒の位置から再生しています。

seekメソッドには、再生開始したい時間をCMTime形式で指定します。

CMTimeMakeWithSeconds関数を使用することで、秒単位で再生開始位置を指定することができます。

○サンプルコード8:動画の再生時間と現在の位置を取得

動画の再生時間や現在の再生位置は、ユーザーにとって有益な情報です。

再生バーの表示や、動画の長さに応じてUIのカスタマイズを行う際にも、これらの情報が必要となります。

Swiftにおいて、AVPlayerの機能を駆使すれば、容易にこれらの情報を取得することができます。

このコードでは、AVPlayerを使って、動画の全体の再生時間と現在の再生位置を取得する方法を表しています。

import AVFoundation
import UIKit

class ViewController: UIViewController {

    var player: AVPlayer!

    override func viewDidLoad() {
        super.viewDidLoad()

        // 動画のURLを指定
        if let url = URL(string: "https://サンプルURL.com/サンプル動画.mp4") {
            player = AVPlayer(url: url)

            // 動画の全体の再生時間を取得
            let duration = CMTimeGetSeconds(player.currentItem!.duration)
            print("動画の全体の再生時間は\(duration)秒です。")

            // 現在の再生位置を取得
            let currentTime = CMTimeGetSeconds(player.currentTime())
            print("現在の再生位置は\(currentTime)秒です。")

            // 動画再生
            player.play()
        }
    }
}

この例において、動画の全体の再生時間と現在の再生位置がそれぞれ秒単位でコンソールに表示されます。

currentItemプロパティを使用することで、再生中の動画の情報にアクセスすることができます。

○サンプルコード9:動画のバッファリング状態の確認

ユーザーエクスペリエンスを考えると、動画の再生中にバッファリングが発生した場合の対応は重要となります。

特にネットワークの低速な環境や大容量の動画を取り扱う場合、バッファリングが発生する可能性が高まります。

Swiftでは、AVPlayerを使用して動画のバッファリング状態を確認し、それに応じてユーザーに情報を提供することができます。

このコードでは、AVPlayerのキーバリューオブザーバリングを活用して、動画のバッファリング状態の変更を監視し、それに基づいて処理を行う方法を表しています。

import AVFoundation
import UIKit

class ViewController: UIViewController {

    var player: AVPlayer!
    var playerItem: AVPlayerItem!

    override func viewDidLoad() {
        super.viewDidLoad()

        // 動画のURLを指定
        if let url = URL(string: "https://サンプルURL.com/サンプル動画.mp4") {
            playerItem = AVPlayerItem(url: url)
            player = AVPlayer(playerItem: playerItem)

            // バッファリング状態の監視
            playerItem.addObserver(self, forKeyPath: "playbackBufferEmpty", options: .new, context: nil)
            playerItem.addObserver(self, forKeyPath: "playbackLikelyToKeepUp", options: .new, context: nil)

            // 動画再生
            player.play()
        }
    }

    override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
        if keyPath == "playbackBufferEmpty" {
            print("バッファリングが始まりました。")
        } else if keyPath == "playbackLikelyToKeepUp" {
            print("バッファリングが終了し、再生が継続されます。")
        }
    }
}

この例において、playbackBufferEmptyのキーパスは動画がバッファリングを必要としている状態を表し、playbackLikelyToKeepUpは動画がバッファリングなしに順調に再生可能な状態を表します。

これらのキーパスの変化を監視することで、バッファリングの開始と終了を検知し、それに対応する処理を実行することができます。

○サンプルコード10:外部ファイルから動画を読み込む

動画ファイルは通常、アプリケーションのバンドル内やウェブサーバー上に保存されていますが、外部のファイルストレージから動画を読み込むシチュエーションも考えられます。

例えば、ユーザーが自分のデバイスに保存している動画ファイルをアプリ内で再生したいという要望に応えるためには、外部ファイルの読み込み機能が必要です。

このコードでは、UIDocumentPickerViewControllerを使用して、ユーザーがデバイス上で選択した動画ファイルを読み込み、それを再生する方法を表しています。

import AVFoundation
import UIKit
import MobileCoreServices

class ViewController: UIViewController, UIDocumentPickerDelegate {

    var player: AVPlayer!

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func pickVideo(_ sender: Any) {
        let documentPicker = UIDocumentPickerViewController(documentTypes: [kUTTypeMovie as String], in: .import)
        documentPicker.delegate = self
        present(documentPicker, animated: true, completion: nil)
    }

    func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL) {
        player = AVPlayer(url: url)
        player.play()
        print("外部ファイルから動画を読み込んで再生しました。")
    }
}

この例において、ユーザーが「pickVideo」ボタンを押すと、UIDocumentPickerViewControllerが表示され、ユーザーは動画ファイルを選択できます。

選択された動画ファイルのURLはdidPickDocumentAtメソッド内で取得され、それを基にAVPlayerで動画が再生されます。

●Swiftでの動画再生の応用例

動画再生の基本的な操作だけでなく、Swiftを使ってさまざまな応用的な動画再生のテクニックも実現できます。

ここでは、その中から特に実用的な3つの方法を詳細に解説します。

○サンプルコード11:動画の背景を透明にする

動画の背景を透明にすることで、動画上の特定のオブジェクトだけを強調したり、他のコンテンツとの組み合わせを自由に楽しむことができます。

この手法は、プロモーション動画や教育的な動画の作成にも役立ちます。

このコードでは、AVPlayerLayerbackgroundColorプロパティを使用して、動画の背景を透明にする方法を表しています。

import AVFoundation
import UIKit

class ViewController: UIViewController {

    var player: AVPlayer!

    override func viewDidLoad() {
        super.viewDidLoad()

        if let url = URL(string: "https://サンプルURL.com/サンプル動画.mp4") {
            player = AVPlayer(url: url)
            let playerLayer = AVPlayerLayer(player: player)
            playerLayer.frame = self.view.bounds
            playerLayer.videoGravity = .resizeAspect
            playerLayer.backgroundColor = UIColor.clear.cgColor // 背景を透明に
            self.view.layer.addSublayer(playerLayer)

            player.play()
        }
    }
}

この例で行っているのは、動画を再生するためのAVPlayerLayerの背景色を透明に設定しています。

この操作により、動画の背景が透明になり、動画の内容が他のUI要素と一体化する効果が得られます。

○サンプルコード12:動画再生中のスクリーンショット取得

ユーザーが動画の特定のシーンをスクリーンショットとして保存したい場合があります。

このような機能は、ハイライトシーンのキャッチやシェアを目的として利用されます。

このコードでは、AVAssetImageGeneratorを使用して、動画再生中の特定の時間帯のスクリーンショットを取得する方法を表しています。

import AVFoundation
import UIKit

class ViewController: UIViewController {

    func captureScreenshot(from videoURL: URL, at time: CMTime) -> UIImage? {
        let asset = AVAsset(url: videoURL)
        let generator = AVAssetImageGenerator(asset: asset)
        generator.appliesPreferredTrackTransform = true

        do {
            let cgImage = try generator.copyCGImage(at: time, actualTime: nil)
            return UIImage(cgImage: cgImage)
        } catch {
            print("スクリーンショットの取得に失敗しました。")
            return nil
        }
    }
}

この例では、指定した動画URLと時間(CMTime)を元に、スクリーンショットを取得しています。

得られたUIImageオブジェクトは、保存やシェアなどの操作に使用できます。

○サンプルコード13:動画再生時の音量調整

動画再生時の音量調整は、ユーザビリティの向上に繋がります。

特に、動画の中で突然大きな音が鳴る場面などがある場合、ユーザーが音量を下げる操作ができるとありがたいです。

このコードでは、AVPlayervolumeプロパティを使用して、動画再生時の音量を調整する方法を表しています。

import AVFoundation
import UIKit

class ViewController: UIViewController {

    var player: AVPlayer!

    func setVolume(to value: Float) {
        player.volume = value
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        if let url = URL(string: "https://サンプルURL.com/サンプル動画.mp4") {
            player = AVPlayer(url: url)
            player.play()

            // 音量を0.5(50%)に設定
            setVolume(to: 0.5)
        }
    }
}

この例では、setVolume関数を使用して、動画再生の音量を指定の値に調整しています。

この関数を利用することで、音量の上げ下げを簡単に実装することができます。

●注意点と対処法

Swiftを用いた動画再生では、非常に多くの便利な機能を利用できますが、それに伴いいくつかの注意点も存在します。

ここでは、Swiftでの動画再生時に起こり得る問題やその対処法について深堀りしていきます。

○動画のフォーマットと互換性

動画ファイルのフォーマットは多種多様ですが、すべてのフォーマットがiOS上での再生に対応しているわけではありません。

再生不可のフォーマットを使用してしまうと、アプリが予期せぬエラーを起こす可能性があります。

このコードでは、AVAssetisPlayableプロパティを使用して、指定した動画ファイルが再生可能かどうかを判定する方法を示しています。

import AVFoundation

func isVideoPlayable(videoURL: URL) -> Bool {
    let asset = AVAsset(url: videoURL)
    return asset.isPlayable
}

if let url = URL(string: "https://サンプルURL.com/サンプル動画.mp4") {
    if isVideoPlayable(videoURL: url) {
        print("この動画は再生可能です。")
    } else {
        print("この動画は再生不可のフォーマットです。")
    }
}

この例で行っているのは、動画ファイルのURLをisVideoPlayable関数に渡すことで、その動画が再生可能かどうかを判定しています。

○バッテリー消費と最適化

動画再生はCPUやGPUを多用するため、バッテリー消費が激しい操作となります。

特に高画質の動画や長時間の再生は、デバイスのバッテリーを早く消耗させる要因となります。

これを軽減するために、動画の解像度を適切に設定するなどの最適化が求められます。

○ストリーミング再生時の注意点

ストリーミング再生は、動画ファイルをダウンロードしながら再生する方法です。

これにより、大容量の動画ファイルでもすぐに再生を開始することができますが、ネットワークの接続状態や帯域に左右されやすいのが特徴です。

特に低速なネットワーク環境下では、バッファリングに時間がかかり、再生が途切れることも考えられます。

このコードでは、AVPlayerItemplaybackLikelyToKeepUpプロパティを利用し、ストリーミング再生時にバッファリングが必要かどうかを確認する方法を表しています。

import AVFoundation

func checkBufferingStatus(for playerItem: AVPlayerItem) {
    if playerItem.playbackLikelyToKeepUp {
        print("再生はスムーズに行われるでしょう。")
    } else {
        print("バッファリングが必要です。")
    }
}

let videoURL = URL(string: "https://サンプルURL.com/ストリーミング動画.mp4")!
let playerItem = AVPlayerItem(url: videoURL)
checkBufferingStatus(for: playerItem)

この例では、指定したAVPlayerItemがスムーズに再生できるか、あるいはバッファリングが必要かを判定しています。

このような判定を行い、ユーザーに適切なフィードバックを提供することで、ストリーミング再生時のユーザビリティを向上させることができます。

●カスタマイズ方法

Swiftで動画を再生する際、多くの開発者はデフォルトの設定だけでなく、独自のカスタマイズを取り入れたいと考えるでしょう。

ここでは、Swiftを使った動画再生のカスタマイズ方法をいくつか紹介します。

○動画プレイヤーのデザイン変更

AVPlayerやAVPlayerViewControllerはデフォルトのデザインが設定されていますが、アプリのデザインやブランドに合わせて変更することができます。

このコードでは、AVPlayerViewControllerのコントローラーバーの色を変更する方法を表しています。

import AVKit
import AVFoundation

let videoURL = URL(string: "https://サンプルURL.com/サンプル動画.mp4")!
let player = AVPlayer(url: videoURL)
let playerViewController = AVPlayerViewController()
playerViewController.player = player
playerViewController.showsPlaybackControls = true
// コントローラーバーの色を変更
playerViewController.view.tintColor = UIColor.red

present(playerViewController, animated: true) {
    player.play()
}

この例では、tintColorプロパティを使用して、コントローラーバーの色を赤色に変更しています。

○動画再生のイベントハンドリング

動画の再生、一時停止、終了などのイベントは、多くの場合でユーザーの操作やアプリの動作に対して何らかのフィードバックや次のアクションを提供するために必要です。

このコードでは、動画再生が終了した際にアラートを表示しています。

import AVKit
import AVFoundation

let videoURL = URL(string: "https://サンプルURL.com/サンプル動画.mp4")!
let player = AVPlayer(url: videoURL)
let playerViewController = AVPlayerViewController()
playerViewController.player = player

// 動画再生が終了した際のイベントをハンドリング
NotificationCenter.default.addObserver(self, selector: #selector(videoDidEnd), name: .AVPlayerItemDidPlayToEndTime, object: nil)

func videoDidEnd(notification: Notification) {
    // アラートを表示
    let alert = UIAlertController(title: "動画再生終了", message: "動画の再生が終了しました。", preferredStyle: .alert)
    alert.addAction(UIAlertAction(title: "閉じる", style: .default, handler: nil))
    present(alert, animated: true, completion: nil)
}

present(playerViewController, animated: true) {
    player.play()
}

この例では、NotificationCenterを使用して、動画再生が終了した際のイベントをハンドリングしています。

イベントが発生するとvideoDidEnd関数が呼ばれ、アラートが表示される仕組みになっています。

まとめ

Swiftを使用した動画再生は、その柔軟性とカスタマイズの豊富さから、多くのiOSアプリ開発者にとって魅力的な選択肢となっています。

本ガイドでは、Swiftを利用した動画再生の基本的な方法から、さまざまな応用例、カスタマイズ方法に至るまでを詳しく解説しました。

特に、初心者の方にとっては、動画再生の基本的なコードの書き方やAVPlayerの使い方を学ぶことができ、中級者の方にはカスタマイズや応用例を通じてさらなるスキルアップの参考にしていただけると考えています。

動画コンテンツの需要は今後も増え続けるでしょう。

Swiftを活用して、ユーザーにとって魅力的な動画再生体験を提供することは、アプリの価値を高める要素となるでしょう。

このガイドが、皆様のアプリ開発の一助となれば幸いです。