Я обновляю приложение, чтобы оно стало 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?