Важность AVAssetWriterInputPixelBufferAdaptor в AVAssetWriter

Я пытаюсь вывести видео, снятое с камеры, используя AVAssetWriter,

Я следую несколько примеров, которые не используют AVAssetWriterInputPixelBufferAdaptor ( Записывайте видео с помощью AVAssetWriter), а некоторые делают ( AVCaptureSession получил только видеобуфер).

Основываясь на ссылках Apple, я интерпретировал цель AVAssetWriterInputPixelBufferAdaptor (или же CVPixelBuffer, CVPixelBufferPoolв общем, чтобы быть эффективным способом буферизации входящих пикселей в памяти. На практике, насколько важно использовать это при записи видео с использованием AVAssetWriter? Кажется, я могу заставить работать базовую версию без использования адаптера, но я хотел немного больше понять преимущества / намерения использования AVAssetWriterInputPixelBufferAdaptor в общем.

0 ответов

Я использую запись видео без PixelBufferAdaptor в течение нескольких лет без каких-либо проблем. Я по существу использую этот код:

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer  fromConnection:(AVCaptureConnection *)connection{
     if (videoWriterInput.readyForMoreMediaData) {
         [videoWriterInput appendSampleBuffer:sampleBuffer];
     }
}

Я предполагаю, что поскольку CMSampleBufferRef содержит информацию о времени, она может быть записана напрямую. Принимая во внимание, что если у вас есть CVPixelBuffer, вы должны добавить информацию о синхронизации через адаптер. Поэтому, если вы выполняете некоторую обработку изображения перед записью, вы получите CVPixelBuffer и должны будете использовать адаптер. Адаптер может также добавить некоторые возможности буферизации для CVPixelBuffer, если ваша обработка занимает время.

Другие вопросы по тегам