나를 위해 작동합니다. 슬라이드 변경시 동영상 애셋의 프레임을 가져옵니다. 아래 코드를 참조하십시오. 내 현재 프로젝트에서 잘라낸 것일 수도 있습니다 som 오류가 있지만 당신은 아이디어를 얻을 것이다. 괜찮 으면 좋겠지 만 스위프트 1에 있습니다.
var urlVideo :NSURL = NSURL()
var vidLength :CMTime = CMTime()
var durInSeconds: Float = 0.00
var timescale:CMTimeScale = CMTimeScale()
var videoInfo:NSDictionary = NSDictionary()
var chosePosSlider:UISlider = UISlider()
@IBOutlet weak var imgCont: UIImageView!
func generateThumnail(url : NSURL, fromTime:Float64) -> UIImage {
var asset :AVAsset = AVAsset.assetWithURL(url) as! AVAsset
var assetImgGenerate : AVAssetImageGenerator = AVAssetImageGenerator(asset: asset)
assetImgGenerate.appliesPreferredTrackTransform = true
assetImgGenerate.requestedTimeToleranceAfter = kCMTimeZero;
assetImgGenerate.requestedTimeToleranceBefore = kCMTimeZero;
var error : NSError? = nil
var time : CMTime = CMTimeMakeWithSeconds(fromTime, timescale)
var img : CGImageRef = assetImgGenerate.copyCGImageAtTime(time, actualTime: nil, error: &error)
var frameImg : UIImage = UIImage(CGImage: img)!
return frameImg
}
func sliderValueDidChange(sender:UISlider!) {
var newTime:Float = durInSeconds * sender.value
setFrame(newTime)
}
func setFrame(pos:Float) {
imgCont.image = generateThumnail(urlVideo, fromTime: Float64(pos))
}
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) {
self.dismissViewControllerAnimated(true, completion: nil)
videoInfo = info as NSDictionary
urlVideo = videoInfo.objectForKey(UIImagePickerControllerMediaURL) as! NSURL
var asset :AVAsset = AVAsset.assetWithURL(urlVideo) as! AVAsset
vidLength = asset.duration
durInSeconds = Float(CMTimeGetSeconds(vidLength))
timescale = vidLength.timescale
chosePosSlider = UISlider(frame:CGRectMake(20, 450, 340, 20))
chosePosSlider.minimumValue = 0
chosePosSlider.maximumValue = 1
chosePosSlider.continuous = true
chosePosSlider.tintColor = UIColor.greenColor()
chosePosSlider.value = 0
chosePosSlider.addTarget(self, action: "sliderValueDidChange:", forControlEvents: .ValueChanged)
self.view.addSubview(chosePosSlider)
setFrame(0.0)
}
H264와 같은 형식으로 사용할 수없는 경우 - 비디오 압축의 기본 사항 (i- 프레임 대 p- 프레임)을 이해해야합니다. – Till
당신은 분명히 할 수 있습니까? 내가 사용할 수있는 형식이 있습니까? – GoldenJoe
이 모든 솔루션? 샘 대답을 찾고 있어요. – arpo