SlideShare a Scribd company logo
1 of 29
Download to read offline
Swiftではじめる動画再生
Yusuke Ariyoshi 2015.5.9
自己紹介
• Yusuke Ariyoshi
• フリーランスiOSエンジニア
• Swift暦(半年∼1年)
• 受託開発、個人アプリ制作(10作ほど)
アプリで動画を再生する
Demo
iOSで動画を再生する
• AVPlayer
• AVPlayerViewController
• MPMoviePlayerController
• MPMoviePlayerViewController
iOSで動画を再生する
• AVPlayer
• AVPlayerViewController
• MPMoviePlayerController
• MPMoviePlayerViewController
AVFoundation.framework
AVKit.framework
iOSで動画を再生する
• AVPlayer
• AVPlayerViewController
• MPMoviePlayerController
• MPMoviePlayerViewController
MediaPlayer.framework
iOSで動画を再生する
• AVPlayer
• AVPlayerViewController
• MPMoviePlayerController
• MPMoviePlayerViewController
UIと表示、iOS8で追加
UI付き動画再生
modal表示などに利用
動画再生
iOSで動画を再生する
• AVPlayer
• AVPlayerViewController
• MPMoviePlayerController
• MPMoviePlayerViewController
今回利用するクラス
Main.Storyboard
D&D
YourViewController.swift
import AVFoundation
import AVKit
class YourViewController: AVPlayerViewController {
override func viewDidLoad() {
super.viewDidLoad()
∼
}
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()
UIの外観
カスタマイズするなら
• AVPlayer
• 自作UI
以下を自分で実装
・Play, Pause等のボタン
・経過時間表示
・動画時間表示 (or 残時間表示)
・プログレス表示
・音量表示
・各タッチハンドリング
・etc
Swiftのオプショナル
YourViewController.swift
// 動画ファイルのURLを取得
let path = NSBundle.mainBundle().pathForResource("hogevideo", ofType: "mp4")!
let url = NSURL(fileURLWithPath: path)
YourViewController.swift
// 動画ファイルのURLを取得
let bundle = NSBundle.mainBundle()
let path = bundle.pathForResource("hogevideo", ofType: "mp4")!
let url = NSURL(fileURLWithPath: path)
YourViewController.swift
// 動画ファイルのURLを取得
let bundle = NSBundle.mainBundle()
let path = bundle.pathForResource("hogevideo", ofType: "mp4")!
let url = NSURL(fileURLWithPath: path)
YourViewController.swift
// 動画ファイルのURLを取得
let bundle = NSBundle.mainBundle()
let path = bundle.pathForResource("hogevideo", ofType: "mp4")
let url = NSURL(fileURLWithPath: path) // コンパイルエラー
YourViewController.swift
// 動画ファイルのURLを取得
let bundle = NSBundle.mainBundle()
let path = bundle.pathForResource("hogevideo", ofType: "mp4")
let url = NSURL(fileURLWithPath: path!) //これはOK
細かく見てみると…
class NSBundle
class func pathForResource(name: String?, ofType ext: String?, inDirectory
bundlePath: String)
-> String?
class NSBundle
class func pathForResource(name: String?, ofType ext: String?, inDirectory
bundlePath: String)
-> String?
class NSURL
init?(fileURLWithPath path: String)
class NSURL
init?(fileURLWithPath path: String)
YourViewController.swift
// 動画ファイルのURLを取得
let bundle = NSBundle.mainBundle()
let path: String? = bundle.pathForResource("hogevideo", ofType: "mp4")
let url = NSURL(fileURLWithPath: path) // Stringを受け取る。String?はコンパイルエラー
YourViewController.swift
// 動画ファイルのURLを取得
let bundle = NSBundle.mainBundle()
let path: String? = bundle.pathForResource("hogevideo", ofType: "mp4")
let url = NSURL(fileURLWithPath: path!) // OK
Sample Code
• 全画面表示、埋め込み表示、
リピート再生 (通知→頭出し) を実装しました
• Githubレポジトリ
https://github.com/ariiyu/VideoPlayerSample
Thanks!

More Related Content

What's hot

プロダクトオーナー2.0
プロダクトオーナー2.0プロダクトオーナー2.0
プロダクトオーナー2.0toshihiro ichitani
 
【de:code 2020】 Power Platform いまさら聞けないモデル駆動型アプリケーション
【de:code 2020】 Power Platform いまさら聞けないモデル駆動型アプリケーション【de:code 2020】 Power Platform いまさら聞けないモデル駆動型アプリケーション
【de:code 2020】 Power Platform いまさら聞けないモデル駆動型アプリケーション日本マイクロソフト株式会社
 
UnityでUI開発を高速化した件
UnityでUI開発を高速化した件UnityでUI開発を高速化した件
UnityでUI開発を高速化した件Grenge, Inc.
 
現場ではこう使った~Office 365 と Azure Functions、Azure Data Factory、Azure SQL Database,...
現場ではこう使った~Office 365 と Azure Functions、Azure Data Factory、Azure SQL Database,...現場ではこう使った~Office 365 と Azure Functions、Azure Data Factory、Azure SQL Database,...
現場ではこう使った~Office 365 と Azure Functions、Azure Data Factory、Azure SQL Database,...Masayuki Ota
 
今さら聞けないソフトウエアエンジアニアリング(要求編)
今さら聞けないソフトウエアエンジアニアリング(要求編) 今さら聞けないソフトウエアエンジアニアリング(要求編)
今さら聞けないソフトウエアエンジアニアリング(要求編) 豆寄席 (株式会社豆蔵)
 
AppiumのWebViewアプリテストの仕組みとハマりどころ
AppiumのWebViewアプリテストの仕組みとハマりどころAppiumのWebViewアプリテストの仕組みとハマりどころ
AppiumのWebViewアプリテストの仕組みとハマりどころMasayuki Wakizaka
 
ぼんやりした要件とテストケースから出てくる地獄のようなゲームテスト自動化導入
ぼんやりした要件とテストケースから出てくる地獄のようなゲームテスト自動化導入ぼんやりした要件とテストケースから出てくる地獄のようなゲームテスト自動化導入
ぼんやりした要件とテストケースから出てくる地獄のようなゲームテスト自動化導入keysh2
 
SharePoint 開発でできること 2019年9月版
SharePoint 開発でできること 2019年9月版SharePoint 開発でできること 2019年9月版
SharePoint 開発でできること 2019年9月版Hiroaki Oikawa
 
Amazon Game Tech Night #20 ゲームバックエンド開発関連セッションのre:cap
Amazon Game Tech Night #20 ゲームバックエンド開発関連セッションのre:capAmazon Game Tech Night #20 ゲームバックエンド開発関連セッションのre:cap
Amazon Game Tech Night #20 ゲームバックエンド開発関連セッションのre:capAmazon Web Services Japan
 
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnity Technologies Japan K.K.
 
Amazon Athena 初心者向けハンズオン
Amazon Athena 初心者向けハンズオンAmazon Athena 初心者向けハンズオン
Amazon Athena 初心者向けハンズオンAmazon Web Services Japan
 
マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017
マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017
マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017Yusuke Suzuki
 
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはがんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはJun-ichi Sakamoto
 
飛び道具ではないMetal #iOSDC
飛び道具ではないMetal #iOSDC飛び道具ではないMetal #iOSDC
飛び道具ではないMetal #iOSDCShuichi Tsutsumi
 
自動化を支えるCI/CDパイプライン
自動化を支えるCI/CDパイプライン自動化を支えるCI/CDパイプライン
自動化を支えるCI/CDパイプラインJunichiMitsunaga
 
Azure DevOps ハンズオン Vo.2 ~Azure DevOps Wiki を用いたドキュメントの作成~
Azure DevOps ハンズオン Vo.2 ~Azure DevOps Wiki を用いたドキュメントの作成~Azure DevOps ハンズオン Vo.2 ~Azure DevOps Wiki を用いたドキュメントの作成~
Azure DevOps ハンズオン Vo.2 ~Azure DevOps Wiki を用いたドキュメントの作成~Takunori Minamisawa
 
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンAzure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンKazuyuki Miyake
 
Microsoft 365 を使い、よりよい業務環境の在り方と仕事への向き合い方を考えよう
Microsoft 365 を使い、よりよい業務環境の在り方と仕事への向き合い方を考えようMicrosoft 365 を使い、よりよい業務環境の在り方と仕事への向き合い方を考えよう
Microsoft 365 を使い、よりよい業務環境の在り方と仕事への向き合い方を考えようAi Hirano
 
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説Fumiya Sakai
 
20200930 AWS Black Belt Online Seminar Amazon Kinesis Video Streams
20200930 AWS Black Belt Online Seminar Amazon Kinesis Video Streams20200930 AWS Black Belt Online Seminar Amazon Kinesis Video Streams
20200930 AWS Black Belt Online Seminar Amazon Kinesis Video StreamsAmazon Web Services Japan
 

What's hot (20)

プロダクトオーナー2.0
プロダクトオーナー2.0プロダクトオーナー2.0
プロダクトオーナー2.0
 
【de:code 2020】 Power Platform いまさら聞けないモデル駆動型アプリケーション
【de:code 2020】 Power Platform いまさら聞けないモデル駆動型アプリケーション【de:code 2020】 Power Platform いまさら聞けないモデル駆動型アプリケーション
【de:code 2020】 Power Platform いまさら聞けないモデル駆動型アプリケーション
 
UnityでUI開発を高速化した件
UnityでUI開発を高速化した件UnityでUI開発を高速化した件
UnityでUI開発を高速化した件
 
現場ではこう使った~Office 365 と Azure Functions、Azure Data Factory、Azure SQL Database,...
現場ではこう使った~Office 365 と Azure Functions、Azure Data Factory、Azure SQL Database,...現場ではこう使った~Office 365 と Azure Functions、Azure Data Factory、Azure SQL Database,...
現場ではこう使った~Office 365 と Azure Functions、Azure Data Factory、Azure SQL Database,...
 
今さら聞けないソフトウエアエンジアニアリング(要求編)
今さら聞けないソフトウエアエンジアニアリング(要求編) 今さら聞けないソフトウエアエンジアニアリング(要求編)
今さら聞けないソフトウエアエンジアニアリング(要求編)
 
AppiumのWebViewアプリテストの仕組みとハマりどころ
AppiumのWebViewアプリテストの仕組みとハマりどころAppiumのWebViewアプリテストの仕組みとハマりどころ
AppiumのWebViewアプリテストの仕組みとハマりどころ
 
ぼんやりした要件とテストケースから出てくる地獄のようなゲームテスト自動化導入
ぼんやりした要件とテストケースから出てくる地獄のようなゲームテスト自動化導入ぼんやりした要件とテストケースから出てくる地獄のようなゲームテスト自動化導入
ぼんやりした要件とテストケースから出てくる地獄のようなゲームテスト自動化導入
 
SharePoint 開発でできること 2019年9月版
SharePoint 開発でできること 2019年9月版SharePoint 開発でできること 2019年9月版
SharePoint 開発でできること 2019年9月版
 
Amazon Game Tech Night #20 ゲームバックエンド開発関連セッションのre:cap
Amazon Game Tech Night #20 ゲームバックエンド開発関連セッションのre:capAmazon Game Tech Night #20 ゲームバックエンド開発関連セッションのre:cap
Amazon Game Tech Night #20 ゲームバックエンド開発関連セッションのre:cap
 
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
 
Amazon Athena 初心者向けハンズオン
Amazon Athena 初心者向けハンズオンAmazon Athena 初心者向けハンズオン
Amazon Athena 初心者向けハンズオン
 
マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017
マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017
マイクロサービス化設計入門 - AWS Dev Day Tokyo 2017
 
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはがんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
 
飛び道具ではないMetal #iOSDC
飛び道具ではないMetal #iOSDC飛び道具ではないMetal #iOSDC
飛び道具ではないMetal #iOSDC
 
自動化を支えるCI/CDパイプライン
自動化を支えるCI/CDパイプライン自動化を支えるCI/CDパイプライン
自動化を支えるCI/CDパイプライン
 
Azure DevOps ハンズオン Vo.2 ~Azure DevOps Wiki を用いたドキュメントの作成~
Azure DevOps ハンズオン Vo.2 ~Azure DevOps Wiki を用いたドキュメントの作成~Azure DevOps ハンズオン Vo.2 ~Azure DevOps Wiki を用いたドキュメントの作成~
Azure DevOps ハンズオン Vo.2 ~Azure DevOps Wiki を用いたドキュメントの作成~
 
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンAzure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
 
Microsoft 365 を使い、よりよい業務環境の在り方と仕事への向き合い方を考えよう
Microsoft 365 を使い、よりよい業務環境の在り方と仕事への向き合い方を考えようMicrosoft 365 を使い、よりよい業務環境の在り方と仕事への向き合い方を考えよう
Microsoft 365 を使い、よりよい業務環境の在り方と仕事への向き合い方を考えよう
 
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
 
20200930 AWS Black Belt Online Seminar Amazon Kinesis Video Streams
20200930 AWS Black Belt Online Seminar Amazon Kinesis Video Streams20200930 AWS Black Belt Online Seminar Amazon Kinesis Video Streams
20200930 AWS Black Belt Online Seminar Amazon Kinesis Video Streams
 

Similar to Swiftではじめる動画再生

6秒動画アプリ Vineの作り方
6秒動画アプリ Vineの作り方6秒動画アプリ Vineの作り方
6秒動画アプリ Vineの作り方Hiramatsu Ryosuke
 
iOS 10 new Camera
iOS 10 new CameraiOS 10 new Camera
iOS 10 new CameraGaprot
 
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話Kentaro Matsumae
 
AppStoreのアプリ動画App Previewsの作り方
AppStoreのアプリ動画App Previewsの作り方AppStoreのアプリ動画App Previewsの作り方
AppStoreのアプリ動画App Previewsの作り方Kosuke Ogawa
 
BaseViewControllerは作りたくない
BaseViewControllerは作りたくないBaseViewControllerは作りたくない
BaseViewControllerは作りたくない今城 善矩
 
iOS13 SDK による 全機能置き換え Part1
iOS13 SDK による 全機能置き換え Part1iOS13 SDK による 全機能置き換え Part1
iOS13 SDK による 全機能置き換え Part1Kaname Noto
 
2015年に「画面テストの動画録画」を作って「流行れ!」 と願ったが、流行らんかった上ロストした話 #seleniumjp
2015年に「画面テストの動画録画」を作って「流行れ!」 と願ったが、流行らんかった上ロストした話 #seleniumjp2015年に「画面テストの動画録画」を作って「流行れ!」 と願ったが、流行らんかった上ロストした話 #seleniumjp
2015年に「画面テストの動画録画」を作って「流行れ!」 と願ったが、流行らんかった上ロストした話 #seleniumjpKazuhito Miura
 
Windows Azure Media Serviceで作成する割と普通な動画サイト
Windows Azure Media Serviceで作成する割と普通な動画サイトWindows Azure Media Serviceで作成する割と普通な動画サイト
Windows Azure Media Serviceで作成する割と普通な動画サイトnormalian
 
iOSで動画からスクショを撮る方法
iOSで動画からスクショを撮る方法iOSで動画からスクショを撮る方法
iOSで動画からスクショを撮る方法Tomo Ita
 
サーバーからiOSアプリを変更する
サーバーからiOSアプリを変更するサーバーからiOSアプリを変更する
サーバーからiOSアプリを変更するtoyship
 
Everyplay/UnityAds入門
Everyplay/UnityAds入門Everyplay/UnityAds入門
Everyplay/UnityAds入門Yasuyuki Kamata
 
Videoshare introduce
Videoshare introduceVideoshare introduce
Videoshare introducevideoshare_jp
 
SI-Toolkit for Web Testing ハンズオン勉強会
SI-Toolkit for Web Testing ハンズオン勉強会SI-Toolkit for Web Testing ハンズオン勉強会
SI-Toolkit for Web Testing ハンズオン勉強会yuichi_kuwahara
 
pythonでつくるiPhoneアプリ
pythonでつくるiPhoneアプリpythonでつくるiPhoneアプリ
pythonでつくるiPhoneアプリKazufumi Ohkawa
 
watchOS 2 新機能の細かい話
watchOS 2 新機能の細かい話watchOS 2 新機能の細かい話
watchOS 2 新機能の細かい話Shuichi Tsutsumi
 
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料Kentaro Matsumae
 
Unity Ads のいろは 動画広告の紹介とコーディング例
Unity Ads のいろは 動画広告の紹介とコーディング例Unity Ads のいろは 動画広告の紹介とコーディング例
Unity Ads のいろは 動画広告の紹介とコーディング例Yasuyuki Kamata
 

Similar to Swiftではじめる動画再生 (20)

6秒動画アプリ Vineの作り方
6秒動画アプリ Vineの作り方6秒動画アプリ Vineの作り方
6秒動画アプリ Vineの作り方
 
iOS 10 new Camera
iOS 10 new CameraiOS 10 new Camera
iOS 10 new Camera
 
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
 
AppStoreのアプリ動画App Previewsの作り方
AppStoreのアプリ動画App Previewsの作り方AppStoreのアプリ動画App Previewsの作り方
AppStoreのアプリ動画App Previewsの作り方
 
BaseViewControllerは作りたくない
BaseViewControllerは作りたくないBaseViewControllerは作りたくない
BaseViewControllerは作りたくない
 
iOS13 SDK による 全機能置き換え Part1
iOS13 SDK による 全機能置き換え Part1iOS13 SDK による 全機能置き換え Part1
iOS13 SDK による 全機能置き換え Part1
 
2015年に「画面テストの動画録画」を作って「流行れ!」 と願ったが、流行らんかった上ロストした話 #seleniumjp
2015年に「画面テストの動画録画」を作って「流行れ!」 と願ったが、流行らんかった上ロストした話 #seleniumjp2015年に「画面テストの動画録画」を作って「流行れ!」 と願ったが、流行らんかった上ロストした話 #seleniumjp
2015年に「画面テストの動画録画」を作って「流行れ!」 と願ったが、流行らんかった上ロストした話 #seleniumjp
 
Windows Azure Media Serviceで作成する割と普通な動画サイト
Windows Azure Media Serviceで作成する割と普通な動画サイトWindows Azure Media Serviceで作成する割と普通な動画サイト
Windows Azure Media Serviceで作成する割と普通な動画サイト
 
iOSで動画からスクショを撮る方法
iOSで動画からスクショを撮る方法iOSで動画からスクショを撮る方法
iOSで動画からスクショを撮る方法
 
サーバーからiOSアプリを変更する
サーバーからiOSアプリを変更するサーバーからiOSアプリを変更する
サーバーからiOSアプリを変更する
 
Everyplay/UnityAds入門
Everyplay/UnityAds入門Everyplay/UnityAds入門
Everyplay/UnityAds入門
 
Videoshare introduce
Videoshare introduceVideoshare introduce
Videoshare introduce
 
SI-Toolkit for Web Testing ハンズオン勉強会
SI-Toolkit for Web Testing ハンズオン勉強会SI-Toolkit for Web Testing ハンズオン勉強会
SI-Toolkit for Web Testing ハンズオン勉強会
 
Swift入門
Swift入門Swift入門
Swift入門
 
pythonでつくるiPhoneアプリ
pythonでつくるiPhoneアプリpythonでつくるiPhoneアプリ
pythonでつくるiPhoneアプリ
 
animation1.0
animation1.0animation1.0
animation1.0
 
watchOS 2 新機能の細かい話
watchOS 2 新機能の細かい話watchOS 2 新機能の細かい話
watchOS 2 新機能の細かい話
 
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料
 
Power point movie
Power point moviePower point movie
Power point movie
 
Unity Ads のいろは 動画広告の紹介とコーディング例
Unity Ads のいろは 動画広告の紹介とコーディング例Unity Ads のいろは 動画広告の紹介とコーディング例
Unity Ads のいろは 動画広告の紹介とコーディング例
 

Swiftではじめる動画再生