Я обновляю приложение до 64-битной совместимости, но у меня возникают небольшие трудности с нашим кодом записи видео. У нас есть камера FireWire, которая передает кадры YUV в наше приложение, которое мы обрабатываем и кодируем на диск в формате MPEG4. В настоящее время мы используем C-based QuickTime API для этого (с помощью Image Compression Manager и т.д.), Но старый QuickTime API не поддерживает 64-разрядную версию.
Моя первая попытка состояла в том, чтобы использовать QTKit QTMovie и кодировать отдельные кадры с помощью -addImage:forDuration:withAttributes:
, но для этого требуется создание NSImage для каждого фрейма (который является дорогостоящим по вычислительной технологии), а не выполнять временное сжатие, поэтому он не генерирует наиболее компактные файлы.
Я хотел бы использовать что-то вроде QTKit Capture QTCaptureMovieFileOutput, но я не могу понять, как подавать необработанные кадры в те, которые не связаны с QTCaptureInput. Мы не можем использовать нашу камеру непосредственно с QTKit Capture из-за нашей необходимости вручную контролировать усиление, экспозицию и т.д. Для этого.
На Lion теперь мы имеем класс AVAssetWriter в AVFoundation, который позволяет вам это делать, но на данный момент мне все еще нужно ориентироваться на Snow Leopard, поэтому я пытаюсь найти решение, которое там тоже работает.
Следовательно, существует ли способ качать по кадру без QuickTime видео, который более эффективен, чем QTMovie -addImage:forDuration:withAttributes:
, и создает размеры файлов, сопоставимые с тем, что может быть более старым API QuickTime?