菜鸟教程小白 发表于 2022-12-13 15:27:45

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


                                            <p><p>我有类似“file:///var/mobile/Media/DCIM/101APPLE/IMG_1006.MOV”的 AVUrlAsset。如何在 Swift 中从这个 url 访问视频?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>这样你就可以获取所有视频</p>

<pre><code>      DispatchQueue.global(qos: .background).async {

      PHPhotoLibrary.requestAuthorization { (status) -&gt; Void in

            let allVidOptions = PHFetchOptions()
            allVidOptions.predicate = NSPredicate(format: &#34;mediaType = %d&#34;, PHAssetMediaType.video.hashValue) //Any type you want to fetch
            allVidOptions.sortDescriptors =


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

            print(&#34;All Videos Count \(allVids.count)&#34;)

            for index in 0..&lt;allVids.count {

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


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

                  // print(result as! )
                  // print(playerItem)

                  let currentVideoUrlAsset = playerItem?.asset as?AVURLAsset

                  let currentVideoFilePAth = currentVideoUrlAsset!.url

                  let lastObject = currentVideoFilePAth.pathExtension

                  print(lastObject)

                  if lastObject == &#34;M4V&#34; {

                        self.arrOfVideos.append(playerItem!)

                  }


                  //NSString *lastPath = ;
                  //NSString *fileExtension = ;
                  //NSLog(@&#34;File extension %@&#34;,fileExtension);


                  var i = Int()
                  print(&#34;Appending.... \(i);)&#34;)
                  i += 1

                  print(&#34;My Videos Count \(self.arrOfVideos.count)&#34;)


                  DispatchQueue.main.async(execute: {

                        self.tblVideos.reloadData()
                  })

                })

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

            }

      }

    }
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何在 swift 3.3x 中从 AVURLAsset URL 访问视频/图像?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/44325560/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/44325560/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何在 swift 3.3x 中从 AVURLAsset URL 访问视频/图像?