2009-04-13 5 views
1

Comment capturer un NSImage de l'écran dans Cocoa? J'ai besoin de savoir le chemin le plus rapide, parce que j'essaye de faire une application de screencasting.Capture d'écran cacao?

Répondre

8

Voir l'exemple OpenGLCaptureToMovie. J'ajouterais que vous devriez utiliser Quartz Display Services' refresh-notification APIs au lieu d'une minuterie.

Notez que l'exemple OpenGL ne produit pas d'objets NSImage. Cela ne sert à rien, puisque vous ne pouvez pas les mettre dans un film. Eh bien, je suppose que vous pourriez assigner un NSImage à une heure donnée, mais je ne sais pas si cela fonctionnerait bien avec la compression.

En parlant de compression, utilisez le codec Animation à la qualité maximale pour votre enregistrement. Cela fournit une compression assez décente pour ne pas submerger le disque, et certainement pas submerger les processeurs. Vous pouvez ensuite proposer des options de conversion, telles que H.264, H.264 pour iPhone et H.264 pour iPod. Vous devez également autoriser l'utilisateur à conserver le fichier d'origine. Certains sites, tels que Vimeo, l'accepteront et permettront aux visiteurs de le télécharger.

+2

La vieille réponse est ancienne. Aujourd'hui, j'utiliserais l'API CGWindowList pour effectuer la capture, et je ne passerais à OpenGL que si CGWindowList s'avère trop lent. –

+0

Merci @Peter pour cette mise à jour de la vieille réponse. Je voulais faire un enregistrement à l'écran open source, y a-t-il de nouveaux éléments que vous pouvez ajouter? :) – Noitidart

+1

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