Как мы можем получить обрезанное видео по таймфреймам в iOS?
У меня есть требование обрезать записанное видео / предварительно записанное видео по кадрам. У меня есть вещи для AVCatureSession
чтобы получить это. Но я не могу определить, как взять первый таймфрейм и второй таймфрейм, чтобы получить видео из выбора. Так что я могу получить обрезанное видео между первым и вторым таймфреймом. Пожалуйста, объясните мне, как этого добиться. Выполнение кода будет высоко оценено.
Заранее спасибо.
1 ответ
Вы можете использовать AVMutableComposition для выполнения этой задачи. Код, совместимый со Swift 5.
extension AVAsset {
func assetByTrimming(startTime: CMTime, endTime: CMTime) throws -> AVAsset {
let duration = CMTimeSubtract(endTime, startTime)
let timeRange = CMTimeRange(start: startTime, duration: duration)
let composition = AVMutableComposition()
do {
for track in tracks {
let compositionTrack = composition.addMutableTrack(withMediaType: track.mediaType, preferredTrackID: track.trackID)
compositionTrack?.preferredTransform = track.preferredTransform
try compositionTrack?.insertTimeRange(timeRange, of: track, at: CMTime.zero)
}
} catch let error {
throw TrimError("error during composition", underlyingError: error)
}
return composition
}
}