AVAssetWriter записывает пустые файлы размером 0kb, .mp4 из настраиваемого видеопотока на устройстве iOS - PullRequest
1 голос
/ 28 мая 2020

Я вижу видеопоток и создаю файлы .mp4, поэтому большую часть времени я делаю правильно. Моя проблема в том, что мои видеофайлы 0kb, пустые. Я использую устройство iOS для управления отдельным устройством с помощью камеры. Эта камера отправляет видеопоток на устройство iOS, и этот поток декодируется в CMSampleBuffer, затем преобразуется в CVPixelBuffer и отображается в UIImageView. Я отлично показываю видео (и отдельная проблема в том, что я получаю -12909 ошибок, если вы что-то знаете об их исправлении, пожалуйста, оставьте комментарий).

Я попытался записать объекты CMSampleBuffer, но из-за ошибок компилятора мне сказали, что мне нужно исключить параметры вывода. Поэтому я удалил их, и теперь он сохраняет пустые файлы. моя операция добавления на AVAssetWriterInput не работает

Вот мой текущий код добавления, я сначала попробовал CMSampleBuffer в реальном времени, что я не знаю, почему не сработало. Я подозреваю, что функция реального времени применима только к AV-компонентам устройств iOS, а не к другим подключенным устройствам. Затем я попробовал это, что, вероятно, должно работать, но это не так. Я пробовал и 30, и 60 кадров в секунду, хотя должно быть 30. Я неправильно использую CMTime? Потому что я пытался просто не использовать CMTime, и это не сработало, как я уже упоминал.

        if self.videoDecoder.isRecording,
            let videoPixelBuffer = self.videoDecoder.videoWriterInputPixelBufferAdaptor,
            videoPixelBuffer.assetWriterInput.isReadyForMoreMediaData {
            print(videoPixelBuffer.append(frame, withPresentationTime: CMTimeMake(value: self.videoDecoder.videoFrameCounter, timescale: 30)))
            self.videoDecoder.videoFrameCounter += 1
        }
...