Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios PhotoData中的视频不可播放_Ios_Swift_Avplayerviewcontroller_Phasset_Phimagemanager - Fatal编程技术网

Ios PhotoData中的视频不可播放

Ios PhotoData中的视频不可播放,ios,swift,avplayerviewcontroller,phasset,phimagemanager,Ios,Swift,Avplayerviewcontroller,Phasset,Phimagemanager,我正在构建一个照片/视频采集器,使用以下代码从手机中获取所有视频 func fetchVideos() -> AnyPublisher<[Video], Never> { Future { promise in let options = PHFetchOptions() options.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending

我正在构建一个照片/视频采集器,使用以下代码从手机中获取所有视频

func fetchVideos() -> AnyPublisher<[Video], Never> {
    Future { promise in
        let options = PHFetchOptions()
        options.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
            
        var videos = [Video]()
            
        PHAsset.fetchAssets(with: .video, options: options).enumerateObjects { asset, _, _ in
            videos.append(Video(asset: asset))
        }
            
        promise(.success(videos))
    }
    .eraseToAnyPublisher()
}
我注意到视频存储在两个不同的地方

  • file:///var/mobile/Media/DCIM/100APPLE/IMG_0813.MP4
  • file:///var/mobile/Media/PhotoData/Metadata/DCIM/100APPLE/IMG_0787.medium.MP4

存储在前一条路径中的视频工作正常。存储在后一路径的视频不可播放。我试图在AVPlayerViewController中播放它们,但它会显示一个划掉的播放按钮,并且没有视频。为什么?我也有同样的问题。如果我向你提出请求,它似乎只获取元信息。当我尝试更改deliveryMode和版本时,我能够正确地编辑和播放

let options: PHVideoRequestOptions = PHVideoRequestOptions()
options.version = .original
options.deliveryMode = .highQualityFormat
options.isNetworkAccessAllowed = true

    
PHImageManager.default().requestAVAsset(forVideo:self.videoAssets[0], options: options, resultHandler: { (asset, audioMix, info) in
        DispatchQueue.main.async {
            if let urlAsset = asset as? AVURLAsset {
                
             // asset, urlAsset
                
            }
        }
})

我也有同样的问题。带有.medium.MP4的视频是从iCloud下载的视频,表面上质量中等。但是当我试图阅读它们时,Avassetrader失败了。您找到解决方案了吗?使用PHImageManager.default().requestPlayerItem(forVideo:options)也找到了同样的解决方案。我得到一个avPlayerItem.status失败的消息,错误代码=257,说明我没有查看该文件的权限。
let options: PHVideoRequestOptions = PHVideoRequestOptions()
options.version = .original
options.deliveryMode = .highQualityFormat
options.isNetworkAccessAllowed = true

    
PHImageManager.default().requestAVAsset(forVideo:self.videoAssets[0], options: options, resultHandler: { (asset, audioMix, info) in
        DispatchQueue.main.async {
            if let urlAsset = asset as? AVURLAsset {
                
             // asset, urlAsset
                
            }
        }
})