Кадр сбрасывается при использовании AVAssetWriter? - PullRequest
1 голос
/ 22 января 2020

Я работаю над приложением, которое обрабатывает видеокадры, эффекты dr aws на кадре и сохраняет их. При сохранении видео с помощью AVAssetWriter я получаю заикания в получающемся видео, но когда я уменьшаю объем обработки для каждого кадра, заикание уменьшается.

Запись и обработка выполняются в отдельных процессах.

Каждый обработанный кадр отправляется в очередь для записи.

Вот код:

_writingQueue.async {
    autoreleasepool {
        synchronized(self) {
            if self._status.rawValue >= VideoRecordingModelStatus.finishingRecordingPart1.rawValue {
                return
            }

            if !self._haveStartedSession {
                self._assetWriter?.startSession(atSourceTime: CMSampleBufferGetPresentationTimeStamp(sampleBuffer))
                self._haveStartedSession = true
            }

            let input = (mediaType == AVMediaType.video) ? self._videoInput : self._audioInput

            while !(input?.isReadyForMoreMediaData ?? false) {}

            let success = input!.append(sampleBuffer)
            if !success {
                let error = self._assetWriter?.error
                synchronized(self) {
                    self.transitionToStatus(.failed, error: error as NSError?)
                }
            }
        }
    }
}

Результирующее видео

...