Как я могу захватывать кадры iSight с помощью Python в Snow Leopard?
У меня есть следующий скрипт PyObjC:
from Foundation import NSObject
import QTKit
error = None
capture_session = QTKit.QTCaptureSession.alloc().init()
print 'capture_session', capture_session
device = QTKit.QTCaptureDevice.defaultInputDeviceWithMediaType_(QTKit.QTMediaTypeVideo)
print 'device', device, type(device)
success = device.open_(error)
print 'device open success', success, error
if not success:
raise Exception(error)
capture_device_input = QTKit.QTCaptureDeviceInput.alloc().initWithDevice_(device)
print 'capture_device_input', capture_device_input, capture_device_input.device()
success = capture_session.addInput_error_(capture_device_input, error)
print 'session add input success', success, error
if not success:
raise Exception(error)
capture_decompressed_video_output = QTKit.QTCaptureDecompressedVideoOutput.alloc().init()
print 'capture_decompressed_video_output', capture_decompressed_video_output
class Delegate(NSObject):
def captureOutput_didOutputVideoFrame_withSampleBuffer_fromConnection_(self, captureOutput, videoFrame, sampleBuffer, connection):
print videoFrame, sampleBuffer, connection
delegate = Delegate.alloc().init()
print 'delegate', delegate
capture_decompressed_video_output.setDelegate_(delegate)
print 'output delegate:', capture_decompressed_video_output.delegate()
success = capture_session.addOutput_error_(capture_decompressed_video_output, error)
print 'capture session add output success', success, error
if not success:
raise Exception(error)
print 'about to run session', capture_session, 'with inputs', capture_session.inputs(), 'and outputs', capture_session.outputs()
capture_session.startRunning()
print 'capture session is running?', capture_session.isRunning()
import time
time.sleep(10)
Программа не сообщает об ошибках, но iSight 'Зеленый свет никогда не активируется и делегатОбратный вызов захвата кадра никогда не вызывается. Вот's вывод я получаю:
$ python prueba.py
capture_session
device Built-in iSight
device open success (True, None) None
capture_device_input Built-in iSight
session add input success (True, None) None
capture_decompressed_video_output
delegate
output delegate:
capture session add output success (True, None) None
about to run session with inputs (
""
) and outputs (
""
)
capture session is running? True
PS: Пожалуйста, неЯ должен попробовать PySight, но я выигралне работает, потому что Xcode не можетскомпилировать CocoaSequenceGrabber в 64-битной.