MENU

【SwiftUI】写真アルバムから動画一覧を取得するには?

記事内に商品プロモーションが含まれる場合があります
目次

動画の取得方法

まずは、動画を取得するために、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
            }
        }
    }
}

SwiftUIが学べる書籍

Share

Comment

コメントする

目次