Что такое 10.6-совместимые средства записи видеокадров в фильм без использования QuickTime API?

Я обновляю приложение, чтобы оно стало 64-битным, но у меня возникли небольшие трудности с нашим кодом записи фильма. У нас есть камера FireWire, которая передает кадры YUV в наше приложение, которые мы обрабатываем и кодируем на диск в фильме MPEG4. В настоящее время для этого мы используем API QuickTime на основе C (с помощью диспетчера сжатия изображений и т. Д.), Но старый API QuickTime не поддерживает 64-разрядную версию.

Моя первая попытка заключалась в использовании QTMovie QTKit и кодировании отдельные кадры с использованием -addImage: forDuration: withAttributes: , но это требует создания NSImage для каждого кадра (что требует больших вычислительных ресурсов), и не выполняет временное сжатие , поэтому не генерирует самые компактные файлы.

Я бы хотел использовать что-то вроде QTCaptureMovieFileOutput QTKit Capture, но я не могу понять, как подавать сырые кадры в те, которые не связаны с QTCaptureInput. Мы не можем использовать нашу камеру напрямую с QTKit Capture из-за того, что нам нужно вручную контролировать для нее усиление, экспозицию и т. Д.

В Lion у нас теперь есть класс AVAssetWriter в AVFoundation, который позволяет вам это делать, но я на данный момент все еще приходится нацеливаться на Snow Leopard, поэтому я пытаюсь найти решение, которое работает и там.

Следовательно, есть способ делать покадровую запись видео, отличную от QuickTime, более эффективен, чем QTMovie's -addImage: forDuration: withAttributes: , и производит размеры файлов, сравнимые с тем, что может иметь старый QuickTime API?

13
задан Brad Larson 4 August 2011 в 17:57
поделиться