Mobile App/iOS
Swift 4 - 영상처리 관련 코드 주석
bugtype
2019. 3. 9. 15:03
// 합치기위한
let composition = AVMutableComposition()
// 비디오 불러오기
let vidAsset = AVURLAsset(url: url)
// get video track
let videoTrack = vidAsset.tracks(withMediaType: AVMediaTypeVideo)[0]
// get audio track
let audioTrack = vidAsset.tracks(withMediaType: AVMediaTypeAudio)[0]
// CMTimeRangeMake 시간을 설정함.
let vid_timerange = CMTimeRangeMake(kCMTimeZero, duration)
// 트랙을 추가함. 비디오트랙
let compositionvideoTrack:AVMutableCompositionTrack = composition.addMutableTrack(withMediaType: AVMediaTypeVideo, preferredTrackID: CMPersistentTrackID())
// 비디오 저장 코드
let documentDir = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!
let path = documentDir.appending("/export.mov")
let outputURL = URL(fileURLWithPath: path)
_ = try? FileManager.default.removeItem(at: outputURL)
guard let presetName = AVAssetExportSession.exportPresets(compatibleWith: asset).first,
let exportSession = AVAssetExportSession(asset: asset, presetName: presetName) else {
print("failed to create asset export session")
completion(nil)
return
}
exportSession.videoComposition = videoComposition
exportSession.outputFileType = AVFileTypeMPEG4
exportSession.outputURL = outputURL
exportSession.exportAsynchronously {
guard exportSession.status == .completed else {
print("export failed: \(exportSession.error)")
completion(nil)
return
}
completion(outputURL)
}
https://github.com/claygarrett/CustomVideoCompositor
2018.02.26 에 작성된 글입니다.