首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS 獲取手機本地視頻播放列表的實現方案

     編輯:程式設計綜合問答

需求背景

開發自定義視頻播放器時,需要讀取用戶手機相冊(非沙箱目錄)中的視頻文件,構建播放列表。iOS 系統為此提供了 ALAsset / PHAsset 框架。

核心方案:使用 Photos 框架(推薦)

自 iOS 8 起,蘋果推薦使用 Photos.framework 替代已棄用的 AssetsLibrary。以下是獲取視頻資源的標準流程:

1. 請求權限

import Photos

PHPhotoLibrary.requestAuthorization { status in
    guard status == .authorized else { return }
    self.fetchVideos()
}

2. 構建獲取選項

let options = PHFetchOptions()
options.predicate = NSPredicate(format: "mediaType == %d", PHAssetMediaType.video.rawValue)
options.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]

3. 獲取資源並轉換為播放列表

func fetchVideos() {
    let assets = PHAsset.fetchAssets(with: options)
    var videoList: [PHAsset] = []
    assets.enumerateObjects { asset, _, _ in
        videoList.append(asset)
    }
    // 此處可將 videoList 傳遞給播放器 UI
    DispatchQueue.main.async {
        self.updateUI(with: videoList)
    }
}

舊版方案:ALAsset(僅供參考)

早期版本可使用 ALAssetsLibrary 遍歷相冊,但該 API 已在 iOS 9 棄用,不建議新項目使用。

注意事項

  • 需在 Info.plist 中添加 NSPhotoLibraryUsageDescription 說明權限用途。
  • 視頻播放時建議使用 PHImageManager 請求 AVPlayerItem 或 AVAsset,而非直接用 URL。
  • 大量視頻時應分頁加載,避免一次性載入導致內存壓力。

採用現代 Photos 框架,能獲得更好的性能、兼容性及蘋果官方長期支持。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved