`AVMutableCompositionTrack.insertTimeRange` завершается с ошибкой -11800

Я создаю AVMutableComposition из видео и аудио треков:

func makeComposition(videoTrack: AVAssetTrack, audioTrack: AVAssetTrack) -> AVComposition {
    let composition = AVMutableComposition()
    /* ... */
    let compositionAudioTrack = composition.addMutableTrack(withMediaType: .audio)!
    try compositionAudioTrack.insertTimeRange(someRange, of: audioTrack, at: .zero) // Error!
    /* ... */
    return composition
}

и insertTimeRange(_:of:at:) не работает с AVFoundationError -11800 AVError.code.unknown и недокументированным базовым NSOSStatusError -12780. В чем может быть дело?


person Alexander Vasenin    schedule 08.04.2020    source источник


Ответы (1)


Оказывается, к тому времени, как я позвоню insertTimeRange, источник AVAsset audioTrack уже был выпущен. AVAssetTrack сохраняет слабую ссылку на источник AVAsset, поэтому вы должны сохранить AVAsset, чтобы использовать AVAssetTrack.

person Alexander Vasenin    schedule 08.04.2020