Submit Search
Upload
6秒動画アプリ Vineの作り方
•
25 likes
•
24,561 views
Hiramatsu Ryosuke
Follow
iOS_LT #13で発表した資料です。 AVFoundationを使ってVineのようなアプリを作ってみました。
Read less
Read more
Technology
Business
Report
Share
Report
Share
1 of 26
Download now
Download to read offline
Recommended
Swiftではじめる動画再生
Swiftではじめる動画再生
Yusuke Ariyoshi
スマートスピーカーのバックエンドでAzure を使う方法
スマートスピーカーのバックエンドでAzure を使う方法
一希 大田
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
Toshiyuki Hirata
App extension for iOS
App extension for iOS
toyship
WordCamp2015 LT WordPress+VPSでつくられたWebサイトのセキュリティチェックポイントとWordPressの「Waltiプラグイ...
WordCamp2015 LT WordPress+VPSでつくられたWebサイトのセキュリティチェックポイントとWordPressの「Waltiプラグイ...
Masanori Fujisaki
WordCafe Fuji vol.1
WordCafe Fuji vol.1
Endoh Shingo
Dev opschef
Dev opschef
Yusuke Ando
Webサイト向けAPI #twtr_hack
Webサイト向けAPI #twtr_hack
Yusuke Yamamoto
Recommended
Swiftではじめる動画再生
Swiftではじめる動画再生
Yusuke Ariyoshi
スマートスピーカーのバックエンドでAzure を使う方法
スマートスピーカーのバックエンドでAzure を使う方法
一希 大田
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
Toshiyuki Hirata
App extension for iOS
App extension for iOS
toyship
WordCamp2015 LT WordPress+VPSでつくられたWebサイトのセキュリティチェックポイントとWordPressの「Waltiプラグイ...
WordCamp2015 LT WordPress+VPSでつくられたWebサイトのセキュリティチェックポイントとWordPressの「Waltiプラグイ...
Masanori Fujisaki
WordCafe Fuji vol.1
WordCafe Fuji vol.1
Endoh Shingo
Dev opschef
Dev opschef
Yusuke Ando
Webサイト向けAPI #twtr_hack
Webサイト向けAPI #twtr_hack
Yusuke Yamamoto
Master-Detail App を実装する
Master-Detail App を実装する
幸雄 村上
Visual studio 2019 updates pickup!
Visual studio 2019 updates pickup!
一希 大田
mBaaS/C4SA howto
mBaaS/C4SA howto
史識 川原
iOS 8 App Extension
iOS 8 App Extension
Takeo Nanba
Redmine4時代のプラグイン開発 redmine.tokyo #13
Redmine4時代のプラグイン開発 redmine.tokyo #13
Sho Douhashi
iOS 8 App Extension「Action」でアプリ間連携してみる
iOS 8 App Extension「Action」でアプリ間連携してみる
Kosuke Ogawa
200813 fgdc mandai
200813 fgdc mandai
beyond Co., Ltd.
AngularとOnsen UIで作る最高のHTML5ハイブリッドアプリ
AngularとOnsen UIで作る最高のHTML5ハイブリッドアプリ
アシアル株式会社
App Extensions in iOS ver JP
App Extensions in iOS ver JP
qohj
モバイルアプリ向けAWSネイティブアーキテクチャ
モバイルアプリ向けAWSネイティブアーキテクチャ
Rikitake Oohashi
Google Play Developer APIを使ってみた
Google Play Developer APIを使ってみた
shinya sakemoto
salesforceとiOSでやってみた
salesforceとiOSでやってみた
Junko Nakayama
スマホアプリディレクターが考えていること
スマホアプリディレクターが考えていること
Kazuaki KURIU
React Nativeの話のその前に… サービスの作り方の話
React Nativeの話のその前に… サービスの作り方の話
Kanako Kobayashi
Flash Professional CS6 の新機能のご紹介 AIR編
Flash Professional CS6 の新機能のご紹介 AIR編
KinkumaDesign
リモート・スマホ・レンタル(第2回 Androidテスト祭り)
リモート・スマホ・レンタル(第2回 Androidテスト祭り)
NTT Resonant Technology Inc.
React + Amplifyで アプリ開発
React + Amplifyで アプリ開発
虎の穴 開発室
AWS amplify studioが変えるフロントエンド開発の未来とは
AWS amplify studioが変えるフロントエンド開発の未来とは
Koitabashi Yoshitaka
20170715 高知lt kintoneカスタマイズ
20170715 高知lt kintoneカスタマイズ
安隆 沖
titanium_outline20111227
titanium_outline20111227
Masashi Hitotsuyanagi
Stupid Video Tricks
Stupid Video Tricks
Chris Adamson
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
Yusuke Murata
More Related Content
What's hot
Master-Detail App を実装する
Master-Detail App を実装する
幸雄 村上
Visual studio 2019 updates pickup!
Visual studio 2019 updates pickup!
一希 大田
mBaaS/C4SA howto
mBaaS/C4SA howto
史識 川原
iOS 8 App Extension
iOS 8 App Extension
Takeo Nanba
Redmine4時代のプラグイン開発 redmine.tokyo #13
Redmine4時代のプラグイン開発 redmine.tokyo #13
Sho Douhashi
iOS 8 App Extension「Action」でアプリ間連携してみる
iOS 8 App Extension「Action」でアプリ間連携してみる
Kosuke Ogawa
200813 fgdc mandai
200813 fgdc mandai
beyond Co., Ltd.
AngularとOnsen UIで作る最高のHTML5ハイブリッドアプリ
AngularとOnsen UIで作る最高のHTML5ハイブリッドアプリ
アシアル株式会社
App Extensions in iOS ver JP
App Extensions in iOS ver JP
qohj
モバイルアプリ向けAWSネイティブアーキテクチャ
モバイルアプリ向けAWSネイティブアーキテクチャ
Rikitake Oohashi
Google Play Developer APIを使ってみた
Google Play Developer APIを使ってみた
shinya sakemoto
salesforceとiOSでやってみた
salesforceとiOSでやってみた
Junko Nakayama
スマホアプリディレクターが考えていること
スマホアプリディレクターが考えていること
Kazuaki KURIU
React Nativeの話のその前に… サービスの作り方の話
React Nativeの話のその前に… サービスの作り方の話
Kanako Kobayashi
Flash Professional CS6 の新機能のご紹介 AIR編
Flash Professional CS6 の新機能のご紹介 AIR編
KinkumaDesign
リモート・スマホ・レンタル(第2回 Androidテスト祭り)
リモート・スマホ・レンタル(第2回 Androidテスト祭り)
NTT Resonant Technology Inc.
React + Amplifyで アプリ開発
React + Amplifyで アプリ開発
虎の穴 開発室
AWS amplify studioが変えるフロントエンド開発の未来とは
AWS amplify studioが変えるフロントエンド開発の未来とは
Koitabashi Yoshitaka
20170715 高知lt kintoneカスタマイズ
20170715 高知lt kintoneカスタマイズ
安隆 沖
titanium_outline20111227
titanium_outline20111227
Masashi Hitotsuyanagi
What's hot
(20)
Master-Detail App を実装する
Master-Detail App を実装する
Visual studio 2019 updates pickup!
Visual studio 2019 updates pickup!
mBaaS/C4SA howto
mBaaS/C4SA howto
iOS 8 App Extension
iOS 8 App Extension
Redmine4時代のプラグイン開発 redmine.tokyo #13
Redmine4時代のプラグイン開発 redmine.tokyo #13
iOS 8 App Extension「Action」でアプリ間連携してみる
iOS 8 App Extension「Action」でアプリ間連携してみる
200813 fgdc mandai
200813 fgdc mandai
AngularとOnsen UIで作る最高のHTML5ハイブリッドアプリ
AngularとOnsen UIで作る最高のHTML5ハイブリッドアプリ
App Extensions in iOS ver JP
App Extensions in iOS ver JP
モバイルアプリ向けAWSネイティブアーキテクチャ
モバイルアプリ向けAWSネイティブアーキテクチャ
Google Play Developer APIを使ってみた
Google Play Developer APIを使ってみた
salesforceとiOSでやってみた
salesforceとiOSでやってみた
スマホアプリディレクターが考えていること
スマホアプリディレクターが考えていること
React Nativeの話のその前に… サービスの作り方の話
React Nativeの話のその前に… サービスの作り方の話
Flash Professional CS6 の新機能のご紹介 AIR編
Flash Professional CS6 の新機能のご紹介 AIR編
リモート・スマホ・レンタル(第2回 Androidテスト祭り)
リモート・スマホ・レンタル(第2回 Androidテスト祭り)
React + Amplifyで アプリ開発
React + Amplifyで アプリ開発
AWS amplify studioが変えるフロントエンド開発の未来とは
AWS amplify studioが変えるフロントエンド開発の未来とは
20170715 高知lt kintoneカスタマイズ
20170715 高知lt kintoneカスタマイズ
titanium_outline20111227
titanium_outline20111227
Viewers also liked
Stupid Video Tricks
Stupid Video Tricks
Chris Adamson
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
Yusuke Murata
最近遊んだ Wii Uの 3つのソフトの感想
最近遊んだ Wii Uの 3つのソフトの感想
teapipin
これからの時代に! パソコン離れの中のパソコン選び
これからの時代に! パソコン離れの中のパソコン選び
teapipin
ツイッター調査:約173万ツイートを調査して分かったTwitterの利用動向 #twtr_hack
ツイッター調査:約173万ツイートを調査して分かったTwitterの利用動向 #twtr_hack
teapipin
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
Shuichi Tsutsumi
Viewers also liked
(6)
Stupid Video Tricks
Stupid Video Tricks
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
最近遊んだ Wii Uの 3つのソフトの感想
最近遊んだ Wii Uの 3つのソフトの感想
これからの時代に! パソコン離れの中のパソコン選び
これからの時代に! パソコン離れの中のパソコン選び
ツイッター調査:約173万ツイートを調査して分かったTwitterの利用動向 #twtr_hack
ツイッター調査:約173万ツイートを調査して分かったTwitterの利用動向 #twtr_hack
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
Similar to 6秒動画アプリ Vineの作り方
2015年に「画面テストの動画録画」を作って「流行れ!」 と願ったが、流行らんかった上ロストした話 #seleniumjp
2015年に「画面テストの動画録画」を作って「流行れ!」 と願ったが、流行らんかった上ロストした話 #seleniumjp
Kazuhito Miura
iOS 10 new Camera
iOS 10 new Camera
Gaprot
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
Kentaro Matsumae
第3回 Web 動画 編集講座 〜 Webサイトに動画を掲載してみよう - NAMO (NAgoya Movie Obenkyokai)
第3回 Web 動画 編集講座 〜 Webサイトに動画を掲載してみよう - NAMO (NAgoya Movie Obenkyokai)
Katz Ueno
第7回 Web 動画 編集講座 〜編集して Web にアップしてみよう - NAMO (NAgoya Movie Obenkyokai)
第7回 Web 動画 編集講座 〜編集して Web にアップしてみよう - NAMO (NAgoya Movie Obenkyokai)
Katz Ueno
情報リテラシー論09様々な動画とネット生配信2017長岡造形大学
情報リテラシー論09様々な動画とネット生配信2017長岡造形大学
新潟コンサルタント横田秀珠
とにかくアプリ内の文言が決まらない話 AbemaTV
とにかくアプリ内の文言が決まらない話 AbemaTV
Shunsuke Matsumoto
Mashup Caravan in FUKUOKA (Cyberagent)
Mashup Caravan in FUKUOKA (Cyberagent)
moai kids
SI-Toolkit for Web Testing ハンズオン勉強会
SI-Toolkit for Web Testing ハンズオン勉強会
yuichi_kuwahara
Similar to 6秒動画アプリ Vineの作り方
(9)
2015年に「画面テストの動画録画」を作って「流行れ!」 と願ったが、流行らんかった上ロストした話 #seleniumjp
2015年に「画面テストの動画録画」を作って「流行れ!」 と願ったが、流行らんかった上ロストした話 #seleniumjp
iOS 10 new Camera
iOS 10 new Camera
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
第3回 Web 動画 編集講座 〜 Webサイトに動画を掲載してみよう - NAMO (NAgoya Movie Obenkyokai)
第3回 Web 動画 編集講座 〜 Webサイトに動画を掲載してみよう - NAMO (NAgoya Movie Obenkyokai)
第7回 Web 動画 編集講座 〜編集して Web にアップしてみよう - NAMO (NAgoya Movie Obenkyokai)
第7回 Web 動画 編集講座 〜編集して Web にアップしてみよう - NAMO (NAgoya Movie Obenkyokai)
情報リテラシー論09様々な動画とネット生配信2017長岡造形大学
情報リテラシー論09様々な動画とネット生配信2017長岡造形大学
とにかくアプリ内の文言が決まらない話 AbemaTV
とにかくアプリ内の文言が決まらない話 AbemaTV
Mashup Caravan in FUKUOKA (Cyberagent)
Mashup Caravan in FUKUOKA (Cyberagent)
SI-Toolkit for Web Testing ハンズオン勉強会
SI-Toolkit for Web Testing ハンズオン勉強会
More from Hiramatsu Ryosuke
iOS 8/Swift 概要 #ios8yahoo
iOS 8/Swift 概要 #ios8yahoo
Hiramatsu Ryosuke
これからはじめる SwiftPlayground入門
これからはじめる SwiftPlayground入門
Hiramatsu Ryosuke
iOSアプリ開発にほんのり役に立つtips集
iOSアプリ開発にほんのり役に立つtips集
Hiramatsu Ryosuke
5分でつまむEffective Objective-C
5分でつまむEffective Objective-C
Hiramatsu Ryosuke
Xcodeを便利に使って爆速開発する #yxcm
Xcodeを便利に使って爆速開発する #yxcm
Hiramatsu Ryosuke
iOSアプリの特急申請 - Apple Expedited Review Request
iOSアプリの特急申請 - Apple Expedited Review Request
Hiramatsu Ryosuke
emoSound by たこ部 | OpenHackDay2
emoSound by たこ部 | OpenHackDay2
Hiramatsu Ryosuke
AppSwitcherでアプリをユーザーファーストに
AppSwitcherでアプリをユーザーファーストに
Hiramatsu Ryosuke
Bitbucket Pull Request 練習帳
Bitbucket Pull Request 練習帳
Hiramatsu Ryosuke
iPhoneアプリ開発を楽に楽しくするサイトまとめ
iPhoneアプリ開発を楽に楽しくするサイトまとめ
Hiramatsu Ryosuke
Unix
Unix
Hiramatsu Ryosuke
C-langage
C-langage
Hiramatsu Ryosuke
More from Hiramatsu Ryosuke
(12)
iOS 8/Swift 概要 #ios8yahoo
iOS 8/Swift 概要 #ios8yahoo
これからはじめる SwiftPlayground入門
これからはじめる SwiftPlayground入門
iOSアプリ開発にほんのり役に立つtips集
iOSアプリ開発にほんのり役に立つtips集
5分でつまむEffective Objective-C
5分でつまむEffective Objective-C
Xcodeを便利に使って爆速開発する #yxcm
Xcodeを便利に使って爆速開発する #yxcm
iOSアプリの特急申請 - Apple Expedited Review Request
iOSアプリの特急申請 - Apple Expedited Review Request
emoSound by たこ部 | OpenHackDay2
emoSound by たこ部 | OpenHackDay2
AppSwitcherでアプリをユーザーファーストに
AppSwitcherでアプリをユーザーファーストに
Bitbucket Pull Request 練習帳
Bitbucket Pull Request 練習帳
iPhoneアプリ開発を楽に楽しくするサイトまとめ
iPhoneアプリ開発を楽に楽しくするサイトまとめ
Unix
Unix
C-langage
C-langage
Recently uploaded
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
Recently uploaded
(12)
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
6秒動画アプリ Vineの作り方
1.
How to make
Vine like app? 6秒動画アプリ Vineの作り方 iOS_LT #13 / @himara2 2014/05/28(Wed.)
2.
Vine ・Twitter社の動画アプリ ・6秒動画アプリ ・画面を押してる間だけ撮影 ・短い動画が連結される 特徴 ・ループ再生される
3.
Vineっぽい機能を実装してみよう。
4.
Vineっぽい機能 ・6秒動画アプリ ・画面を押してる間だけ撮影 ・撮影した短い動画が連結される ・ループ再生される
5.
Vineっぽい機能 ・6秒動画アプリ ・画面を押してる間だけ撮影 ・撮影した短い動画が連結される ・ループ再生される
6.
AVFoundation framework をつかう。
7.
撮影編
8.
@tomonish くんが発表してたやつ http://www.slidesharenet.org/ssuser9c7e21/avfoundation
9.
10.
① ② ③
11.
①AVCaptureSesison の準備 // セッションの作成 self.session
= [[AVCaptureSession alloc] init]; _session.sessionPreset = AVCaptureSessionPresetHigh; @property (nonatomic) AVCaptureSession *session;
12.
②入力デバイス(カメラ)の準備 // 入力デバイスの設定 AVCaptureDevice *device
= [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; ! AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil]; ! [_session addInput:input];
13.
③出力デバイス(ファイル)の準備 // 出力デバイスの作成 self.output =
[[AVCaptureMovieFileOutput alloc] init]; CMTime maxDuration = CMTimeMakeWithSeconds(60, 30); _output.maxRecordedDuration = maxDuration; _output.minFreeDiskSpaceLimit = 1024 * 1024; ! [_session addOutput:_output];
14.
これで準備はOK! // セッションを開始 [_session startRunning]; セッションの開始
15.
NSString *outputPath =
[[NSString alloc] initWithFormat:@“%@%@%d.mp4”, NSTemporaryDirectory(), @“output", outputIndex]; NSURL *fileURL = [NSURL fileURLWithPath:outputPath]; ! [_output startRecordingToOutputFileURL:fileURL recordingDelegate:self]; 録画開始のタイミングで… 録画停止のタイミングで… [_output stopRecording];
16.
#pragma mark -
AVCaptureFileOutputRecordingDelegate ! // 録画開始 - (void)captureOutput:(AVCaptureFileOutput *)captureOutput didStartRecordingToOutputFileAtURL:(NSURL *)fileURL fromConnections:(NSArray *)connections { NSLog(@"rec start."); } ! ! // 録画停止 - (void)captureOutput:(AVCaptureFileOutput *)captureOutput didFinishRecordingToOutputFileAtURL:(NSURL *)outputFileURL fromConnections:(NSArray *)connections error:(NSError *)error { NSLog(@"rec end."); // 出力ファイルを指定しておく [_outputPathes addObject:outputFileURL]; } Delegate method 保存したファイルパスをArrayで保持しておく
17.
撮影開始 → 撮影終了
で .mp4 outputPathes (NSArray)
18.
合成編
19.
①コンポジションの準備 // コンポジション生成 self.composition =
[AVMutableComposition composition]; AVMutableCompositionTrack *compositionVideoTrack = [_composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
20.
②動画の合成 CMTime startTime =
kCMTimeZero; for (NSURL *url in _outputPathes) { // 動画アセットの取得 AVAsset *asset = [AVAsset assetWithURL:url]; AVAssetTrack *videoTrack = [[asset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0]; [compositionVideoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, asset.duration) ofTrack:videoTrack atTime:startTime error:nil]; startTime = CMTimeAdd(startTime, asset.duration); }
21.
②動画の合成 CMTime startTime =
kCMTimeZero; for (NSURL *url in _outputPathes) { // 動画アセットの取得 AVAsset *asset = [AVAsset assetWithURL:url]; AVAssetTrack *videoTrack = [[asset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0]; [compositionVideoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, asset.duration) ofTrack:videoTrack atTime:startTime error:nil]; startTime = CMTimeAdd(startTime, asset.duration); }
22.
CMTime startTime =
kCMTimeZero; for (NSURL *url in _outputPathes) { // 動画アセットの取得 AVAsset *asset = [AVAsset assetWithURL:url]; AVAssetTrack *videoTrack = [[asset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0]; [compositionVideoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, asset.duration) ofTrack:videoTrack atTime:startTime error:nil]; startTime = CMTimeAdd(startTime, asset.duration); } kCMTimeZero asset.duration asset1 asset2 asset3 assetの終端に 次のassetをinsertしていく
23.
③合成した動画の出力 // 出力する self.exporter =
[[AVAssetExportSession alloc] initWithAsset:_composition presetName:AVAssetExportPresetHighestQuality]; _exporter.videoComposition = videoComposition; _exporter.outputURL=[NSURL fileURLWithPath:outputPath]; _exporter.outputFileType = AVFileTypeQuickTimeMovie; [_exporter exportAsynchronouslyWithCompletionHandler:^(void){ // export成功時の処理(カメラロールへの保存など) }];
24.
「撮影した短い動画の連結」完成! ※音声込みの動画にしたい場合は Audioも録音・合成する必要があります
25.
参考資料 AVFoundationを使ったキャプチャ機能 - SlideShare AVFoundationで動画の加工合成処理
- qiita iOS4プログラミングブック - Amazon ・撮影に関するクラスの俯瞰に ・合成や編集に関するクラスの俯瞰に ・体系的におさえるならコレ
26.
おわり
Download now