目次
動画の取得方法
まずは、動画を取得するために、Photosフレームワークをインポートします。
import Photos
Photosフレームワークでデバイスに保存されたデータを取得する際に、メディアタイプを「動画」にすることで動画のみのデータが取得できます。
以下、サンプルコードになります。
@State private var videos: [PHAsset] = []
// 動画の取得処理
private func fetchVideos() {
// ユーザーから写真ライブラリへのアクセス許可を取得する
PHPhotoLibrary.requestAuthorization { status in
// 許可が得られた場合
if status == .authorized {
// フェッチオプションを作成
let fetchOptions = PHFetchOptions()
// メディアタイプが動画であるもののみを検索する述語を追加
fetchOptions.predicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.video.rawValue)
// 作成日時を基準に昇順でソート
fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: true)]
// フェッチ結果を取得
let fetchResult = PHAsset.fetchAssets(with: fetchOptions)
// 取得した動画のPHAssetを格納する配列
var assets: [PHAsset] = []
// フェッチ結果を列挙し、各動画を配列に追加
fetchResult.enumerateObjects { (asset, _, _) in
assets.append(asset)
}
// メインスレッドで動作するようにデータを更新
DispatchQueue.main.async {
self.videos = assets
}
}
}
}
Comment