Я вижу видеопоток и создаю файлы .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
}