Я работаю над приложением, которое обрабатывает видеокадры, эффекты 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?)
}
}
}
}
}
Результирующее видео