Swiftではじめる動画再生

29
Swiftではじめる動画再生 Yusuke Ariyoshi 2015.5.9

Transcript of Swiftではじめる動画再生

Page 1: Swiftではじめる動画再生

Swiftではじめる動画再生Yusuke Ariyoshi 2015.5.9

Page 2: Swiftではじめる動画再生

自己紹介• Yusuke Ariyoshi

• フリーランスiOSエンジニア

• Swift暦(半年~1年)

• 受託開発、個人アプリ制作(10作ほど)

Page 3: Swiftではじめる動画再生

アプリで動画を再生する

Page 4: Swiftではじめる動画再生

Demo

Page 5: Swiftではじめる動画再生

iOSで動画を再生する• AVPlayer

• AVPlayerViewController

• MPMoviePlayerController

• MPMoviePlayerViewController

Page 6: Swiftではじめる動画再生

iOSで動画を再生する• AVPlayer

• AVPlayerViewController

• MPMoviePlayerController

• MPMoviePlayerViewController

AVFoundation.framework

AVKit.framework

Page 7: Swiftではじめる動画再生

iOSで動画を再生する• AVPlayer

• AVPlayerViewController

• MPMoviePlayerController

• MPMoviePlayerViewControllerMediaPlayer.framework

Page 8: Swiftではじめる動画再生

iOSで動画を再生する• AVPlayer

• AVPlayerViewController

• MPMoviePlayerController

• MPMoviePlayerViewController

UIと表示、iOS8で追加

UI付き動画再生

modal表示などに利用

動画再生

Page 9: Swiftではじめる動画再生

iOSで動画を再生する• AVPlayer

• AVPlayerViewController

• MPMoviePlayerController

• MPMoviePlayerViewController

今回利用するクラス

Page 10: Swiftではじめる動画再生

Main.Storyboard

D&D

Page 11: Swiftではじめる動画再生

YourViewController.swiftimport AVFoundation import AVKit

class YourViewController: AVPlayerViewController {

override func viewDidLoad() { super.viewDidLoad()

}

Page 12: Swiftではじめる動画再生

YourViewController.swift// 動画ファイルのURLを取得 let path = NSBundle.mainBundle().pathForResource("hogevideo", ofType: "mp4")! let url = NSURL(fileURLWithPath: path) // アイテム取得 let playerItem = AVPlayerItem(URL: url) // 生成 let player = AVPlayer(playerItem: playerItem) // 再生 player.play()

Page 13: Swiftではじめる動画再生

UIの外観

Page 14: Swiftではじめる動画再生

カスタマイズするなら

• AVPlayer

• 自作UI

以下を自分で実装 ・Play, Pause等のボタン ・経過時間表示 ・動画時間表示 (or 残時間表示) ・プログレス表示 ・音量表示 ・各タッチハンドリング ・etc

Page 15: Swiftではじめる動画再生

Swiftのオプショナル

Page 16: Swiftではじめる動画再生

YourViewController.swift// 動画ファイルのURLを取得 let path = NSBundle.mainBundle().pathForResource("hogevideo", ofType: "mp4")! let url = NSURL(fileURLWithPath: path)

Page 17: Swiftではじめる動画再生

YourViewController.swift// 動画ファイルのURLを取得 let bundle = NSBundle.mainBundle() let path = bundle.pathForResource("hogevideo", ofType: "mp4")! let url = NSURL(fileURLWithPath: path)

Page 18: Swiftではじめる動画再生

YourViewController.swift// 動画ファイルのURLを取得 let bundle = NSBundle.mainBundle() let path = bundle.pathForResource("hogevideo", ofType: "mp4")! let url = NSURL(fileURLWithPath: path)

Page 19: Swiftではじめる動画再生

YourViewController.swift// 動画ファイルのURLを取得 let bundle = NSBundle.mainBundle() let path = bundle.pathForResource("hogevideo", ofType: "mp4") let url = NSURL(fileURLWithPath: path) // コンパイルエラー

Page 20: Swiftではじめる動画再生

YourViewController.swift// 動画ファイルのURLを取得 let bundle = NSBundle.mainBundle() let path = bundle.pathForResource("hogevideo", ofType: "mp4") let url = NSURL(fileURLWithPath: path!) //これはOK

Page 21: Swiftではじめる動画再生

細かく見てみると…

Page 22: Swiftではじめる動画再生

class NSBundleclass func pathForResource(name: String?, ofType ext: String?, inDirectory bundlePath: String) -> String?

Page 23: Swiftではじめる動画再生

class NSBundleclass func pathForResource(name: String?, ofType ext: String?, inDirectory bundlePath: String) -> String?

Page 24: Swiftではじめる動画再生

class NSURLinit?(fileURLWithPath path: String)

Page 25: Swiftではじめる動画再生

class NSURLinit?(fileURLWithPath path: String)

Page 26: Swiftではじめる動画再生

YourViewController.swift// 動画ファイルのURLを取得 let bundle = NSBundle.mainBundle() let path: String? = bundle.pathForResource("hogevideo", ofType: "mp4") let url = NSURL(fileURLWithPath: path) // Stringを受け取る。String?はコンパイルエラー

Page 27: Swiftではじめる動画再生

YourViewController.swift// 動画ファイルのURLを取得 let bundle = NSBundle.mainBundle() let path: String? = bundle.pathForResource("hogevideo", ofType: "mp4") let url = NSURL(fileURLWithPath: path!) // OK

Page 28: Swiftではじめる動画再生

Sample Code• 全画面表示、埋め込み表示、

リピート再生 (通知→頭出し) を実装しました

• Githubレポジトリ

https://github.com/ariiyu/VideoPlayerSample

Page 29: Swiftではじめる動画再生

Thanks!