Важность 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, если ваша обработка занимает время.