iOSで動画再生する方法に関するメモ。
以前確かやったことはありますが、久しぶりにやったら意外と時間がかかったので今後のためにメモ。
【iOS】アプリ内で動画を再生する方法(Swift)
今回はアプリ内に再生する動画を同梱させてそれを再生させます。
なのでまずは、再生する動画をプロジェクトに追加します。
今回はmp4ファイルを再生。
アプリ内で動画を再生するプログラムは下記です。
import UIKit import MediaPlayer import AVKit class MoviePlayViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() setVideoView() // Do any additional setup after loading the view. } func setVideoView(){ //動画ファイルのURLを取得 let path = Bundle.main.path(forResource: "anime", ofType: "mp4") let url = URL.init(fileURLWithPath: path as! String) let player:AVPlayer = AVPlayer.init(url: url) var controller:AVPlayerViewController = AVPlayerViewController.init() controller.player = player controller.view.frame = CGRect(x:0, y:0, width:self.view.bounds.size.width,height:self.view.bounds.size.height) self.addChild(controller) self.view.addSubview(controller.view) NotificationCenter.default.addObserver(self, selector:#selector(MoviePlayViewController.didPlayToEndTime), name: .AVPlayerItemDidPlayToEndTime, object: player.currentItem) player.play() } @objc func didPlayToEndTime () { print("finish!!") self.dismiss(animated: false, completion: nil) } }
上記の場合、ViewControllerに遷移したタイミングでanime.mp4という動画ファイルをアプリ内で再生します。
(動画Viewのサイズは全画面)
動画再生が完了したタイミングでViewControllerを閉じるために「NotificationCenter」で「AVPlayerItemDidPlayToEndTime」を検知してます。(ViewControllerをモーダルで開く前提)
ちなみに、動画再生時の再生・停止ボタンなどのコントローラーを非表示にしたい場合は「AVPlayer」に「showsPlaybackControls = false」
を設定すればコントローラーが表示されなくなります。
参考:
developer.apple.com
developer.apple.com
developer.apple.com
developer.apple.com
【追記】アプリ内で動画を再生する方法のAndroid版
Androidアプリで動画を再生する方法も書きました↓
develop.hateblo.jp