Swift. Проблема с освоением AVFoundation

Цель: просто запустить 2 видео, одно за другим. Проблема: после того как заканчивается первое видео, на экране симулятора появляется не второе видео, а лагающее первое, а консоль бесконечно пестрит вот этими двумя ошибками:

2021-02-20 17:14:01.662121+0300 AVFoundation_Homework[10491:832640] [] [17:14:01.662] H264_DecodeFrameAsynchronously signalled err=-8969 (err) (H264_DecodeFrameAsynchronously frame failed) at /Library/Caches/com.apple.xbs/Sources/CoreMediaH264SWLib_Bundle_Sim/CoreMediaH264SWLib-574/VCPAVC/H264VideoDecoder.c:1838
2021-02-20 17:14:01.662412+0300 AVFoundation_Homework[10491:832640] [] [17:14:01.662] vtDecompressionDuctDecodeSingleFrame signalled err=-8969 (err) (VTVideoDecoderDecodeFrame returned error) at /Library/Caches/com.apple.xbs/Sources/EmbeddedCoreMedia_Sim/EmbeddedCoreMedia-2765.6/Sources/VideoToolbox/VTDecompressionSession.c:4863

Вот мой код на всякий случай:

import UIKit
import AVFoundation

class AssetStore{
    
    let video1: AVAsset
    let video2: AVAsset
    let video3: AVAsset
    let music1: AVAsset
    let music2: AVAsset
    
    init(video1: AVAsset, video2: AVAsset, video3: AVAsset, music1: AVAsset, music2: AVAsset) {
        self.video1 = video1
        self.video2 = video2
        self.video3 = video3
        self.music1 = music1
        self.music2 = music2
    }
    
    static func asset (_ resource: String, type: String) -> AVAsset {
        guard let path = Bundle.main.path(forResource: resource, ofType: type) else { fatalError() }
        let url = URL(fileURLWithPath: path)
        return AVAsset(url: url)
    }

    static func test() -> AssetStore {
        return AssetStore(video1: asset("1", type: "mp4"),
                          video2: asset("2", type: "mp4"),
                          video3: asset("3", type: "mp4"),
                          music1: asset("music1", type: "mp3"),
                          music2: asset("music2", type: "mp3")
                          )
    }
    
    func compose() -> AVAsset {
        let composition = AVMutableComposition()
        
        guard let videoTrack = composition.addMutableTrack(withMediaType: .video, preferredTrackID: Int32(kCMPersistentTrackID_Invalid)) else { fatalError() }
        
        guard let audioTrack = composition.addMutableTrack(withMediaType: .audio, preferredTrackID: Int32(kCMPersistentTrackID_Invalid)) else { fatalError() }
        
        func insert (track: AVMutableCompositionTrack, asset: AVAsset, at: CMTime, type: AVMediaType, duratinon: CMTime ) {
            try? track.insertTimeRange(
                CMTimeRange(start: CMTime.zero, duration: duratinon),
                of: asset.tracks(withMediaType: type)[0],
                at: at)
        }
        
        insert(track: videoTrack, asset: video1, at: CMTime.zero, type: .video, duratinon: video1.duration)
        insert(track: videoTrack, asset: video2, at: video1.duration , type: .video, duratinon: video2.duration)       
        return composition
    }   
}

class ViewController: UIViewController {
    
    let store = AssetStore.test()

    override func viewDidLoad() {
        super.viewDidLoad()

    }

    override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
        super.touchesEnded(touches, with: event)
        startPlaying(asset: store.compose())
    }
    
    func startPlaying(asset: AVAsset) {
        let playerItem = AVPlayerItem(asset: asset)
        let player = AVPlayer(playerItem: playerItem)
        let playerLayer = AVPlayerLayer(player: player)
        playerLayer.frame = view.bounds
        view.layer.addSublayer(playerLayer)
        player.play()
    }
    
}

Ответы (0 шт):