Как мы можем получить обрезанное видео по таймфреймам в 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
    }

}

Другие вопросы по тегам