Я разрабатываю приложение на основе видео в Swift3. Где у меня есть один URL-адрес видео и ползунок диапазона в соответствии с продолжительностью видео, и пользователь может выбрать любое минимальное и максимальное значение из ползунка. Если предположим, что пользователь выбрал минимальное значение 3 секунды и максимальное значение 7 секунд, поэтому для этого времени мне нужно создать миниатюру видео. Для этого я использую AVAssetImageGenerator
для создания этого, я попробовал ниже оба кода для достижения этого:
func createThumbnailOfVideoFromFileURL(_ strVideoURL: URL) -> UIImage?{
let asset = AVAsset(url: strVideoURL)
let assetImgGenerate : AVAssetImageGenerator = AVAssetImageGenerator(asset: asset)
assetImgGenerate.appliesPreferredTrackTransform = true
let time = CMTimeMake(1, 30)
let img = try? assetImgGenerate.copyCGImage(at: time, actualTime: nil)
guard let cgImage = img else { return nil }
let frameImg = UIImage(cgImage: cgImage)
return frameImg
}
func generateThumbnailForUrl(vidUrl:URL) -> UIImage {
let asset = AVURLAsset(url: vidUrl, options: nil)
let imgGenerator = AVAssetImageGenerator(asset: asset)
var thmbnlImg = UIImage()
do{
let cgImage = try imgGenerator.copyCGImage(at: CMTimeMake(0, 1), actualTime: nil)
thmbnlImg = UIImage(cgImage: cgImage)
thmbnlImg = thmbnlImg.imageRotatedByDegrees(degrees: 90.0, flip: false)
}
catch{
print(error)
}
// !! check the error before proceeding
return thmbnlImg
}
Но проблема в том, что я получаю одно и то же миниатюрное изображение, используя оба вышеуказанных метода, потому что я не устанавливаю здесь продолжительность в обоих методах. Как я могу добавить минимальную и максимальную продолжительность для создания разных эскизов для каждой разной продолжительности. Пожалуйста, помогите мне решить мою проблему. Спасибо!
Изменить: я попытался установить продолжительность, например:
let time: CMTime = CMTimeMakeWithSeconds(rangeSlider!.lowerValue, 1)
Затем я получаю другое миниатюрное изображение, но для некоторых диапазонов ползунков я также получаю нулевое миниатюрное изображение. Может у кого-нибудь есть идея, как установить значение selectedTimeScale в CMTimeMakeWithSeconds
?