AVExportSession случайно завершается с ошибкой «Этот формат мультимедиа не поддерживается» - PullRequest
0 голосов
/ 24 февраля 2020

Фон : Я записываю пользовательский экран с помощью startCapture и stopCapture методов ReplayKit. У меня есть один AVAssetWriter с двумя AVAssetWriterInputs, по одному для .video и .audioMi c. Writer настроен для видео .h264 (.mov) и аудио LinearPCM. В обработчике завершения finishWriting автора, я вызываю метод, который экспортирует записанные файлы с использованием exportSession. Этот экспорт не удается случайно. Иногда это работает, иногда нет.

После отладки я обнаружил, что экспорт завершается неудачно, когда AVAsset записанного файла НЕ имеет дорожек ИЛИ имеет только одну дорожку (т. Е. Одну из видео или аудио). треков). Я использовал loadAsynchronously метод AVAsset, чтобы убедиться, что дорожки загружены перед последующим вызовом, но он по-прежнему возвращает регистры, как и раньше. Поэтому я подозревал, что проблема должна быть с писателем. Я могу подтвердить, что CMSampleBufferData добавляется к writerInputs правильно. А в блоке завершения stopCapture оба ввода записывающего устройства помечаются как завершенные, и вызывается finishWriting на записывающем устройстве. Итак, я не уверен, почему существует неопределенное и случайное возникновение этой ошибки и как ее устранить.

Описание ошибки :

Error Domain=AVFoundationErrorDomain Code=-11822 "Cannot Open" UserInfo={NSLocalizedFailureReason=This media format is not supported., NSLocalizedDescription=Cannot Open, NSUnderlyingError=0x28885cc60 {Error Domain=NSOSStatusErrorDomain Code=-16976 "(null)"}} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...