• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 如何在 swift 3.3x 中从 AVURLAsset URL 访问视频/图像?

[复制链接]
菜鸟教程小白 发表于 2022-12-13 15:27:45 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有类似“file:///var/mobile/Media/DCIM/101APPLE/IMG_1006.MOV”的 AVUrlAsset。如何在 Swift 中从这个 url 访问视频?



Best Answer-推荐答案


这样你就可以获取所有视频

        DispatchQueue.global(qos: .background).async {

        PHPhotoLibrary.requestAuthorization { (status) -> Void in

            let allVidOptions = PHFetchOptions()
            allVidOptions.predicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.video.hashValue) //Any type you want to fetch
            allVidOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: true)]


//Now the set the option to `fetchAssets`
            let allVids = PHAsset.fetchAssets(with: allVidOptions)

            print("All Videos Count \(allVids.count)")

            for index in 0..<allVids.count {

                let videoRequestOptions =           PHVideoRequestOptions()
                videoRequestOptions.deliveryMode = .fastFormat //quality-> 360p mp4
                videoRequestOptions.version =      .original


                PHImageManager.default().requestPlayerItem(forVideo: allVids[index], options: videoRequestOptions , resultHandler: { (playerItem, result) in

                    // print(result as! [String: AnyObject])
                    // print(playerItem)

                    let currentVideoUrlAsset = playerItem?.asset as?  AVURLAsset

                    let currentVideoFilePAth = currentVideoUrlAsset!.url

                    let lastObject = currentVideoFilePAth.pathExtension

                    print(lastObject)

                    if lastObject == "M4V" {

                        self.arrOfVideos.append(playerItem!)

                    }


                    //NSString *lastPath = [videoURL lastPathComponent];
                    //NSString *fileExtension = [lastPath pathExtension];
                    //NSLog(@"File extension %@",fileExtension);


                    var i = Int()
                    print("Appending.... \(i);)")
                    i += 1

                    print("My Videos Count \(self.arrOfVideos.count)")


                    DispatchQueue.main.async(execute: {

                        self.tblVideos.reloadData()
                    })

                })

                //fetch Asset here
                //print(allVids[index].description)
                //   print(self.arrOfVideos) //will show empty first then after above completion the execution will come here again

            }

        }

    }

关于ios - 如何在 swift 3.3x 中从 AVURLAsset URL 访问视频/图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44325560/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap