видеобуфер iPhone - PullRequest
       4

видеобуфер iPhone

3 голосов
/ 01 декабря 2008

Я пытаюсь создать видеомагнитофон без джейлбрейка моего iPhone (у меня есть лицензия разработчика). Я начал использовать частную платформу PhotoLibrary, но я могу достичь только 2ftp (слишком медленно). Приложение Cycoder имеет частоту кадров 15, я думаю, что оно использует другой подход. Я пытался создать растровое изображение из предварительного просмотра CameraController, но оно всегда возвращает черное растровое изображение.

Интересно, есть ли способ прямого доступа к видеобуферу, возможно, с помощью инфраструктуры IOKit.

Спасибо Marco

Ответы [ 5 ]

1 голос
/ 02 марта 2009

Это большая проблема. До сих пор я решил использовать некоторые временные буферы фиксированного размера и отделить поток для каждого буфера, когда он заполнен. Поток сохранит содержимое буфера во флэш-памяти. Запуск некоторых тяжелых потоков, так как каждый поток обращается к вспышке, замедлит работу устройства и обновит изображение с камеры. Буферы не могут быть большими, потому что вы получите предупреждение о памяти, и не могут быть маленькими, потому что вы замораживаете устройство из-за слишком большого количества потоков и обращений к флэш-памяти одновременно. Решение заключается в балансирующем размере буфера и количестве потоков.

Я еще не пытался использовать sqlite3 db для хранения двоичных данных изображений, но я не буду, если это будет лучшим решением.

PS: чтобы ускорить вызов методов класса, избегайте общего решения [метода объекта] из-за того, как работает метод, но попытайтесь получить и сохранить адрес метода, как показано ниже.

От Apple ObjC doc:

"В приведенном ниже примере показано, как может выглядеть процедура, реализующая метод setFilled: называется:

void (*setter)(id, SEL, BOOL); 
int i; 
setter = (void (*)(id, SEL, BOOL))[target methodForSelector:@selector(setFilled:)]; 
for ( i = 0; i < 1000, i++ ) 
setter(targetList[i], @selector(setFilled:), YES); "

Marco

1 голос
/ 31 января 2009

Вот код:

image = [window _createCGImageRefRepresentationInFrame:rectToCapture];

Marco

0 голосов
/ 03 декабря 2008

Для захвата видео, которое вы можете увидеть, когда камера активна, требуются довольно сложные приемы, не представленные ни одной структурой / библиотекой из коробки.

0 голосов
/ 03 декабря 2008

Я использовал недокументированный метод UIWindow, чтобы получить текущий отображаемый кадр как CGImageRef. Теперь это успешно работает !!

Если вы хотите, и если мне позволено, я могу опубликовать код, который делает трюк.

Marco

0 голосов
/ 02 декабря 2008

Если вы намереваетесь когда-либо выпустить свое приложение в App Store, использование частного фреймворка обеспечит его отклонение. Видео, использующее SDK, просто не поддерживается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...