質問編集履歴

1 修正

Kesth

Kesth score 83

2015/09/21 22:59  投稿

【iOS,Swift】カメラロールから動画だけを表示し、選択させる方法
ご覧頂きありがとうございます。
首記の件ですが、現在開発しているアプリにおいて
下記のような実装をしたいと考えています。
①ユーザーがカメラロールから選択した動画を表示させるための
AVPlayerとUIImagePickerControllerを起動するためのUIButtonを
配置したViewControllerがある
(ViewController自体はTableViewで作成しており、動画を表示させる
AVPlayerはTableViewのCellの1つとしてCustomCellで実装。
投稿の最後にイメージ図を掲載しています)
②UIButtonを押すとmodalでUIImagePickerControllerが起動し
ユーザーのカメラロールへアクセス
③カメラロールを表示した際に動画のみを表示させる
(写真は表示させないようにしたい)
④ユーザーが動画を選択したらmodalを閉じ、その動画を
ViewCOntroller上のAVPlayerに格納させ、再生できるようにする
現在、①〜②のPickerControllerの起動およびカメラロールへの
アクセス自体はできているものの、動画のみの選択ができず
写真も一緒に全て表示されてしまいます。
また、④についても、どのように選択した動画をセットさせるのか
が全く思いつきません。
(PlayerItemにどうやってセットするんだろうとか考えています)
つきましては、下記について教えて頂ければ大変幸いです。
①UIImagePickerControllerを使用し、カメラロールの動画のみを
表示させる方法
②カメラロールから選択した動画をAVPlayerにセットし
表示させる方法
最後に、現在書いているコードを添付させていただきます。
以上、お手数ですが、よろしくお願いいたします。
↓UIButtonを押し、PickerControllerを起動
```Swift
func uploadVideo(){
if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.PhotoLibrary) {
let picker = UIImagePickerController()
picker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
picker.mediaTypes = [kUTTypeMovie as String]
picker.allowsEditing = false
picker.delegate = self
picker.videoQuality = UIImagePickerControllerQualityType.TypeHigh
self.presentViewController(picker, animated: true, completion: nil)
}
}
```
↓カメラロールから動画を選択した時のメソッド
```Swift
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
let mediaType = info[UIImagePickerControllerMediaType] as! NSString
if mediaType == kUTTypeMovie {
let url: NSURL = info[UIImagePickerControllerMediaURL] as! NSURL
let moviePath: String = url.path!
if UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(moviePath) {
UISaveVideoAtPathToSavedPhotosAlbum(moviePath, nil, nil, nil)
}
}
self.dismissViewControllerAnimated(true, completion: nil)
}
```
※イメージ図
![イメージ説明](69f6635ea558344bce9d4d4c20c3634b.png)
  • Swift 2

    1353 questions

    Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

  • iOS 9

    217 questions

    iOS 9は、アップル社のモバイルOSであるiOSシリーズのバージョン。特徴として検索機能の強化、Siriの機能改良、iPad向けマルチタスクなどがあります。マルチウィンドウ機能をサポートし、iPad向けマルチタスクもサポートされています。

  • Swift

    12279 questions

    Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る