// 합치기위한
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 에 작성된 글입니다.
'Mobile App > iOS' 카테고리의 다른 글
스토리 보드 분리할 경우 생기는 오류 해결 방법(iMessage) (0) | 2019.03.09 |
---|---|
Swift - 4 image 불러오기, url image 불러오기 (0) | 2019.03.09 |
Swift 4 - 이미지 프로세싱 image processing ( 기초 ) (0) | 2019.03.09 |
Swift 4 - NSMutableAttributedString을 이용하여 Outline text 만들기 (0) | 2019.03.09 |
Swift 4 - 폰트 체크하기, 폰트 적용하기 (0) | 2019.03.09 |