У меня есть rangeSlider.lowerValue и rangeSlider.upperValue. Как я могу добавить эти два значения в CMTimeMakeWithSeconds? Я понятия не имею об этом.
имаюсь разработкой приложения на основе видео в 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)
Затем я получаю другое уменьшенное изображение, но для некоторых диапазонов ползунков я получаю также нулевое уменьшенное изображение. Может кто-нибудь иметь представление о том, как установить значение предпочитаемого времени вCMTimeMakeWithSeconds
?