[Swift2]PCからiTunes経由で同期したiPhone内にある動画にアクセスする方法


iPhone内にある動画にアクセスしてゴニョゴニョしたい!と思ったのですが、ちょっと手間取ったので、メモがてら共有します。そもそもiPhone内にある動画と言っても、いくつか種類があるようでして。私がアクセスしたかったのは以下2つ。

(1)写真app内にある動画

photo

このアイコンのやつ。自分がiPhoneで撮ったビデオが入ってますね。

・写真app内にある動画へのアクセス

ちょっとググれば、以下のように参考になるサイトがたくさん出てくるので、助かります。
UIImagePickerControllerで動画だけを選択する方法
Choosing Images with UIImagePickerController in Swift

(2)ビデオappにある動画

video

このアイコンのやつ。iTunesから同期した動画が入ってますね。ここへのアクセスに困りました。うーん、困った困った。

・とりあえずStackOverFlow

ググってもどうもそれらしい答えが出てこないので、困ったときのStackOverFlowです、頑張って英語で質問!

How to access the video in iPhone synched through iTunes from PC

すると早速返信が。

You can’t access those videos using PhotoKit. PhotoKit only allows access to media stored in the central Photo Library – in short: everything that is shown in the Photos App.

Videos synced by iTunes are part of the Music(iPod)-Library. You can access these through the MPMediaLibrary:

なるほど。iTunesから同期した動画は、Photos FrameworkではMobile Core Services Frameworkでもなく、Media Player FrameworkのMPMediaLibrary classを使うのですね!

・このコードで動いた

import MediaPlayer

として、動画にアクセスしたい箇所で、

let mediaTypeNumber = MPMediaType.AnyVideo.rawValue
let query = MPMediaQuery()
query.addFilterPredicate(MPMediaPropertyPredicate(value: mediaTypeNumber, forProperty: MPMediaItemPropertyMediaType))

let items: [MPMediaItem] = query.items! as [MPMediaItem]
for item in items {
// If you want to get title.
let title = item.valueForProperty(MPMediaItemPropertyTitle) as! String
}

とでもすると、無事iTunesから同期した動画にアクセスできました。

・注意

MPMediaPickerが使えれば自分でUI作る必要なくて楽なんですが、なぜか、MPMediaPicker使うと動画にアクセスできません。。。

その他参考

MPMediaPickerController with video media types not working(Objective-cはこちら)
[iOS][Swift]ミュージックライブラリにアクセスして音楽を再生する(MPMusicPlayerController使用)

以上。