写真の撮影やカメラロールから画像を選択するときと同じように、動画の撮影でもUIImagePickerController
が利用できる。
手順
-
MobileCoreServices.framework
をプロジェクトに追加する。 - 利用するUIViewControllerで
UIImagePickerControllerDelegate
・UINavigationControllerDelegate
を採用する。 - 以下のサンプルを参照。
カメラを起動して動画を撮影、カメラロールに保存するまでのサンプル
class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
// (略)
/*
* 動画用のカメラを起動する
*/
func startCamera() {
// カメラが利用できる端末かどうか確認
if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera) {
var ipc: UIImagePickerController = UIImagePickerController()
ipc.delegate = self
ipc.sourceType = UIImagePickerControllerSourceType.Camera
ipc.mediaTypes = [kUTTypeMovie] // ここで動画を指定する。
ipc.allowsEditing = false
ipc.showsCameraControls = true
self.presentViewController(ipc, animated: true, completion: nil)
} else {
println("この端末ではカメラを利用できません")
}
}
/*
* 動画の撮影が完了して戻ってきたとき
*/
func imagePickerController(picker: UIImagePickerController!, didFinishPickingMediaWithInfo info:NSDictionary!) {
picker.dismissViewControllerAnimated(true, completion: nil)
if let url = info[UIImagePickerControllerMediaURL] as? NSURL {
// 端末のカメラロールに保存する
UISaveVideoAtPathToSavedPhotosAlbum(url.path, self, "video:didFinishSavingWithError:contextInfo:", nil)
}
}
/*
* カメラロールへの保存が終了したとき
*/
func video(videoPath: String, didFinishSavingWithError error: NSError!, contextInfo: UnsafeMutablePointer<Void>) {
if (error != nil) {
println("動画の保存に失敗しました。")
} else {
println("動画の保存に成功しました。")
}
}
}
参考
【文法】UIImagePickerControllerを使った動画(ムービー、ビデオ)撮影の方法 - creativi.tea
http://teapipin.blog10.fc2.com/blog-entry-63.html
【iOS】【swift】アルバムへの保存 UIImageWriteToSavedPhotosAlbum - Qiita
http://qiita.com/kitanoow/items/995d254fa6cd89f066cb
Taking Pictures and Movies
https://developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/CameraAndPhotoLib_TopicsForIOS/Articles/TakingPicturesAndMovies.html#//apple_ref/doc/uid/TP40010406