2009-04-13 3 views

ответ

8

См. Образец OpenGLCaptureToMovie. Добавлю, что вместо таймера вы должны использовать Quartz Display Services' refresh-notification APIs.

Обратите внимание, что пример OpenGL не создает объекты NSImage. Нет смысла делать это, так как вы не можете помещать их в фильм. Ну, я думаю, вы могли бы назначить NSImage за указанное время кадра, но я не знаю, насколько хорошо это будет работать с сжатием.

Говоря об компрессии, используйте кодек Animation для максимального качества записи. Это обеспечивает достаточно достаточное сжатие, чтобы не перегружать диск и, конечно же, не будет перегружать процессоры. Затем вы можете предложить варианты конвертации, такие как H.264, H.264 для iPhone и H.264 для iPod. Вы также должны позволить пользователю сохранять исходный файл; некоторые сайты, такие как Vimeo, принимают его и разрешают посетителям загружать его.

+2

Старый ответ старый. Сегодня я бы использовал API CGWindowList для выполнения захвата и переключился на OpenGL, только если CGWindowList окажется слишком медленным. –

+0

Спасибо @Peter за это обновление от старого ответа. Я хотел сделать запись с экрана с открытым исходным кодом, есть ли какие-либо новые elbaboration yo ucan add? :) – Noitidart

+1

@Noitidart: https://developer.apple.com/library/mac/documentation/Carbon/Reference/CGWindow_Reference/ –