ios - 无法从 iOS swift 中的 firebase 视频 url 生成视频缩略图?
问题描述
我正在使用以下方法从远程服务器 url 生成视频缩略图。如果我的网址不是例如 Firebase 网址。
https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4
然后我可以生成缩略图,但如果我的 url 是如下所示的 firebase url
然后不会生成视频缩略图。
获取视频缩略图的方法
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
}
}
请让我知道是什么问题?
解决方案
请尝试下面的代码,它对我有用。
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")
推荐阅读
- python - Pandas DataFrame - 用于字符串/布尔出现计数的滚动列 value_counts()
- opencv - OpenCV 中的 GStreamer API:autovideosink 与 appsink
- javascript - NGX Datatable 将行匹配到列属性
- jquery - 页面加载jquery时吐司警告
- c# - 需要帮助将自定义 C# Windows 窗体控件转换为自定义 C# 通用 Windows 平台控件
- reactjs - SVG React 组件不会居中
- python - Python RSA - 无法使代码解密消息
- python - Python正则表达式替换任何不是字母或空格的字符
- java - 在 getter 和 setter 方法中将 LocalDate 解析为 String
- python - Python中的多线程:迭代器中对象的并行比较