首页 > 解决方案 > 无法从 iOS swift 中的 firebase 视频 url 生成视频缩略图?

问题描述

我正在使用以下方法从远程服务器 url 生成视频缩略图。如果我的网址不是例如 Firebase 网址。

https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4

然后我可以生成缩略图,但如果我的 url 是如下所示的 firebase url

https://firebasestorage.googleapis.com/v0/b/shaberi-a249e.appspot.com/o/message-videos%2F8EDAC3FC-D754-4165-990A-97F6ECE120A6.mp4?alt=media&token=b3271370-a408-467d- abbc-7df2beef45c7

然后不会生成视频缩略图。

获取视频缩略图的方法

 func createThumbnailOfVideoFromRemoteUrl(url: String) -> UIImage? {

        let asset = AVAsset(url: URL(string: url)!)
        let assetImgGenerate = AVAssetImageGenerator(asset: asset)
        assetImgGenerate.appliesPreferredTrackTransform = true
        //Can set this to improve performance if target size is known before hand
        //assetImgGenerate.maximumSize = CGSize(width,height)
        let time = CMTimeMakeWithSeconds(1.0, 100)
        do {
            let img = try assetImgGenerate.copyCGImage(at: time, actualTime: nil)
            let thumbnail = UIImage(cgImage: img)
            return thumbnail
        } catch {
            print(error.localizedDescription)
            return nil
        }
    }

请让我知道是什么问题?

标签: iosswiftfirebasevideofirebase-storage

解决方案


请尝试下面的代码,它对我有用。

func createThumbnailOfVideoFromRemoteUrl(url: String) {

        if let asset = AVAsset(url: URL(string: url)!) as? AVAsset {
            //let durationSeconds = CMTimeGetSeconds(asset.duration)
            let generator = AVAssetImageGenerator(asset: asset)

            generator.appliesPreferredTrackTransform = true

            let time = CMTimeMakeWithSeconds(3.0, preferredTimescale: 600)
            //var thumbnailImage: CGImage

            generator.generateCGImagesAsynchronously(forTimes: [NSValue(time: time)]) { (time, thumbnail, cmtime, result, error) in
                if (thumbnail != nil) {
                    DispatchQueue.main.async {
                        self.profileImgView.image = UIImage(cgImage: thumbnail!)
                    }
                }
            }
        }
    }


self.createThumbnailOfVideoFromRemoteUrl(url: "https://firebasestorage.googleapis.com/v0/b/shaberi-a249e.appspot.com/o/message-videos%2F8EDAC3FC-D754-4165-990A-97F6ECE120A6.mp4?alt=media&token=b3271370-a408-467d-abbc-7df2beef45c7")

在此处输入图像描述


推荐阅读