Check if url can be created in createThumbnailOfVideoFromFileURL (MultilineMessageCell and ChatConversationViewModel)

This commit is contained in:
Benoit Martins 2023-05-22 15:53:02 +02:00 committed by QuentinArguillere
parent ae974b933c
commit 392d218c4f
2 changed files with 29 additions and 17 deletions

View file

@ -473,16 +473,20 @@ class ChatConversationViewModel: ControlsViewModel {
}
return UIImage(named: "chat_error")!
}
func createThumbnailOfVideoFromFileURL(videoURL: String) -> UIImage? {
let asset = AVAsset(url: URL(string: videoURL)!)
let assetImgGenerate = AVAssetImageGenerator(asset: asset)
assetImgGenerate.appliesPreferredTrackTransform = true
do {
let img = try assetImgGenerate.copyCGImage(at: CMTimeMake(value: 1, timescale: 10), actualTime: nil)
let thumbnail = UIImage(cgImage: img)
return thumbnail
} catch _{
if let urlVideo = URL(string: videoURL){
let asset = AVAsset(url: urlVideo)
let assetImgGenerate = AVAssetImageGenerator(asset: asset)
assetImgGenerate.appliesPreferredTrackTransform = true
do {
let img = try assetImgGenerate.copyCGImage(at: CMTimeMake(value: 1, timescale: 10), actualTime: nil)
let thumbnail = UIImage(cgImage: img)
return thumbnail
} catch _{
return nil
}
} else {
return nil
}
}

View file

@ -1243,14 +1243,22 @@ class MultilineMessageCell: SwipeCollectionViewCell, UICollectionViewDataSource,
}
func createThumbnailOfVideoFromFileURL(videoURL: String) -> UIImage? {
let asset = AVAsset(url: URL(string: "file://" + videoURL.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!)!)
let assetImgGenerate = AVAssetImageGenerator(asset: asset)
assetImgGenerate.appliesPreferredTrackTransform = true
do {
let img = try assetImgGenerate.copyCGImage(at: CMTimeMake(value: 1, timescale: 10), actualTime: nil)
let thumbnail = UIImage(cgImage: img)
return thumbnail
} catch _{
if let urlEncoded = videoURL.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed){
if let urlVideo = URL(string: "file://" + urlEncoded){
let asset = AVAsset(url: urlVideo)
let assetImgGenerate = AVAssetImageGenerator(asset: asset)
assetImgGenerate.appliesPreferredTrackTransform = true
do {
let img = try assetImgGenerate.copyCGImage(at: CMTimeMake(value: 1, timescale: 10), actualTime: nil)
let thumbnail = UIImage(cgImage: img)
return thumbnail
} catch _{
return nil
}
} else {
return nil
}
} else {
return nil
}
}