IOS Swift AVMutableComposition Видео - черные рамки посередине

Я пытаюсь объединить список видео в одно видео. Это происходит по нажатию кнопки.

Теперь первый раз это работает, но во второй раз я получаю черные рамки в середине двух объединенных видео.

Вот код:

open var arrayVideos = [AVAsset]()
    open var layerInstructionsArray = [AVVideoCompositionLayerInstruction]()
    open var completeTrackDuration: CMTime = CMTimeMake(0, 1)

           let mixComposition = AVMutableComposition()
            let track = mixComposition.addMutableTrack(withMediaType: AVMediaTypeVideo, preferredTrackID: Int32(kCMPersistentTrackID_Invalid))
            let audioTrack = mixComposition.addMutableTrack(withMediaType: AVMediaTypeAudio, preferredTrackID: kCMPersistentTrackID_Invalid)

           for index in 0..<arrayVideos.count {

               let avAsset = arrayVideos[index]

                let clipAudioTrack: AVAssetTrack = avAsset.tracks(withMediaType: AVMediaTypeAudio)[0]
                do {
                    try track.insertTimeRange(CMTimeRangeMake(kCMTimeZero, avAsset.duration), of: avAsset.tracks(withMediaType: AVMediaTypeVideo)[0], at: index == 0 ? kCMTimeZero:completeTrackDuration)
                     try? audioTrack.insertTimeRange(CMTimeRangeMake(kCMTimeZero, avAsset.duration), of: clipAudioTrack, at: index == 0 ? kCMTimeZero:completeTrackDuration)
                } catch _ {
                    print("Failed to load track")
                }

               completeTrackDuration = CMTimeAdd(completeTrackDuration, avAsset.duration)

               let firstInstruction = videoCompositionInstructionForTrack(track: track, asset: avAsset)
                firstInstruction.setOpacity(0.0, at: completeTrackDuration)

               self.layerInstructionsArray.append(firstInstruction)

           }


            let mainInstruction = AVMutableVideoCompositionInstruction()
            mainInstruction.timeRange = CMTimeRangeMake(kCMTimeZero, completeTrackDuration)
            mainInstruction.layerInstructions = layerInstructionsArray

           let mainComposition = AVMutableVideoComposition()
            mainComposition.instructions = [mainInstruction]
            mainComposition.frameDuration = CMTimeMake(1, 30)
            mainComposition.renderSize = CGSize(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)

Любая идея, в чем может быть проблема. Пожалуйста помоги.

0 ответов

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