我想从服务器上的视频底层获取缩略图图像.视频文件不在本地.它在我的Sever上.视频文件的扩展名为.m3u8.
jav*_*muu 11
你能行的.
第一步你需要导入AVFoundation:
import AVFoundation
Run Code Online (Sandbox Code Playgroud)
然后将下面的代码放到您的控制器:
func getThumbnailImage(forUrl url: URL) -> UIImage? {
let asset: AVAsset = AVAsset(url: url)
let imageGenerator = AVAssetImageGenerator(asset: asset)
do {
let thumbnailImage = try imageGenerator.copyCGImage(at: CMTimeMake(1, 60) , actualTime: nil)
return UIImage(cgImage: thumbnailImage)
} catch let error {
print(error)
}
return nil
}
Run Code Online (Sandbox Code Playgroud)
用法:
let imageView = UIImageView()
let url = URL(string: "your_video_url")
if let thumbnailImage = getThumbnailImage(forUrl: url) {
imageView.image = thumbnailImage
}
Run Code Online (Sandbox Code Playgroud)
将网址更改为您的视频链接.
希望它有所帮助!
第1步
import AVFoundation
Run Code Online (Sandbox Code Playgroud)
第2步
在您的 ViewController 中添加以下功能
func getThumbnailImageFromVideoUrl(url: URL, completion: @escaping ((_ image: UIImage?)->Void)) {
DispatchQueue.global().async { //1
let asset = AVAsset(url: url) //2
let avAssetImageGenerator = AVAssetImageGenerator(asset: asset) //3
avAssetImageGenerator.appliesPreferredTrackTransform = true //4
let thumnailTime = CMTimeMake(value: 2, timescale: 1) //5
do {
let cgThumbImage = try avAssetImageGenerator.copyCGImage(at: thumnailTime, actualTime: nil) //6
let thumbNailImage = UIImage(cgImage: cgThumbImage) //7
DispatchQueue.main.async { //8
completion(thumbNailImage) //9
}
} catch {
print(error.localizedDescription) //10
DispatchQueue.main.async {
completion(nil) //11
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
第 3 步
self.getThumbnailImageFromVideoUrl(url: videoUrl) { (thumbNailImage) in
self.yourImageView.image = thumbNailImage
}
Run Code Online (Sandbox Code Playgroud)
如果您需要完整的解释,请参阅以下链接 https://www.swiftdevcenter.com/get-thumbnail-from-video-url-in-background-swift/
| 归档时间: |
|
| 查看次数: |
9345 次 |
| 最近记录: |