Swift3에서 비디오 기반 응용 프로그램을 개발 중입니다. 비디오 길이에 따라 하나의 비디오 URL과 범위 슬라이더가 있고 슬라이더에서 최소 및 최대 값을 선택할 수 있습니다. 사용자가 최소값 3 초 및 최대 값 7 초를 선택한 것으로 가정하면이 기간 동안 비디오 썸네일 이미지를 생성해야합니다. 나는이를 생성하는 AVAssetImageGenerator
을 사용하고이를 위해,이 달성하기 위해 두 코드 아래 시도 :Swift iOS의 URL에서 매번 동일한 비디오 미리보기 이미지 가져 오기
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
}
을하지만 문제는 위의 방법을 모두 사용하여 같은 썸네일 이미지를 얻고있다, bcos 나는 두 가지 방법 모두에서 여기에 지속 시간을 설정하지 마십시오. 각기 다른 기간에 대해 서로 다른 축소판 이미지를 생성하기 위해 최소 및 최대 기간을 어떻게 추가 할 수 있습니까? 제 문제를 해결하도록 도와주세요. 고맙습니다!
편집 : let time: CMTime = CMTimeMakeWithSeconds(rangeSlider!.lowerValue, 1)
가 그럼 난 다른 썸네일 이미지를 얻고 있지만, 일부 슬라이더 범위에 대해 나 또한 전무 썸네일 이미지를 점점 오전 : 내가 좋아하는 기간을 설정했습니다. 누구든지 CMTimeMakeWithSeconds
에 preferredTimeScale 값을 설정하는 방법에 대한 아이디어가 있습니까?
덕분에, 나는 여기 난 단지 하나의 주요 동영상 URL 및 사용자가 슬라이더에서 최소 및 최대 값을 선택하는 범위 슬라이더를 가지고 .. 트림 동영상 URL이 없습니다. 해당 범위 값을 사용하여 축소판 이미지를 생성해야합니다. 어떤 제안이라도 ... 알 겠어? –
ok ... 슬라이더의 최소값과 최대 값을 CMTimeMakeWithSeconds로 변환하고이 값을 위의 함수에 전달해야합니다. fromTime : Float64가 여기에있는 매개 변수입니다. –
나를 코드로 보여줄 수 있습니까? CMTimeMake 값은 변경되었지만 항상 동일한 축소판이 변경되었습니다. –