- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有以下 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 的绿灯从未被激活,委托(delegate)的帧捕获回调也从未被调用。这是我得到的输出:
$ python prueba.py
capture_session <QTCaptureSession: 0x1006c16f0>
device Built-in iSight <objective-c class QTCaptureDALDevice at 0x7fff70366aa8>
device open success (True, None) None
capture_device_input <QTCaptureDeviceInput: 0x1002ae010> Built-in iSight
session add input success (True, None) None
capture_decompressed_video_output <QTCaptureDecompressedVideoOutput: 0x104239f10>
delegate <Delegate: 0x10423af50>
output delegate: <Delegate: 0x10423af50>
capture session add output success (True, None) None
about to run session <QTCaptureSession: 0x1006c16f0> with inputs (
"<QTCaptureDeviceInput: 0x1002ae010>"
) and outputs (
"<QTCaptureDecompressedVideoOutput: 0x104239f10>"
)
capture session is running? True
PS:请不要回答我应该试试 PySight,我试过了,但它不起作用,因为 Xcode 无法在 64 位中编译 CocoaSequenceGrabber。
最佳答案
这里的问题是您没有事件循环。如果您想将其作为一个独立的脚本来执行,则必须弄清楚如何创建一个脚本。 PyObjC XCode 模板自动为您设置:
from PyObjCTools import AppHelper
AppHelper.runEventLoop()
尝试将其插入脚本的顶部,然而,显示 AppHelper
(可能是 NSApplicationMain
)中的某些内容需要一个 plist 文件来从中提取主类。你可以通过创建一个 setup.py
文件并使用 py2app
来获得它,就像这个来自 PyObjc talk 的例子一样。 :
from distutils.core import setup
import py2app
plist = dict(
NSPrincipalClass='SillyBalls',
)
setup(
plugin=['SillyBalls.py'],
data_files=['English.lproj'],
options=dict(py2app=dict(
extension='.saver',
plist=plist,
)),
)
关于python - 如何在 Snow Leopard 中使用 Python 捕获 iSight 帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1576593/
我使用 NSImageViews 的动画代理代理对其进行动画处理。在 Snow Leopard 上测试我的应用程序时,一切都按预期进行。然而,在 Leopard 上,所有动画都不起作用。此外,无论是否
我想知道创建一个上下文菜单项的最佳实践是什么,该菜单项可以在 leopard 和 Snow leopard 中工作,并与选择的文件和/或文件夹一起使用,将它们发送到 shellscript。 我知道上
我在 Snow Leopard 中开发了一个简单的应用程序。在 Snow Leopard 中编译的构建配置为:(10.5 | Release | i386)。 当我尝试使用上述配置编译它时,它在应用程
背景 我是一名正在为 Mac 构建应用程序的开发人员。我即将接触 Snow Leopard。到目前为止,我一直在 Leopard 上构建。我只做了大约一年的 Cocoa 开发,不是很认真。 我读了很多
我打开 ScriptEditor,点击 Record,点击文档中的一些图标,打开 System Preferences,然后点击 ScriptEditor 中的 stop 并且没有任何 react ,
有没有办法让文本位于鼠标光标下? 我正在尝试构建一个字典应用程序,当鼠标悬停在单词上时会弹出一个翻译面板。 我查看了accessibility api,它只能找到当前的ui元素,但不能找到当前的单词.
我当前正在使用 NSRunAlertPanel 来显示对话框。 它在 Leopard 和 Snow Leopard 中完美运行。在 Tiger 中,除了图标之外它也有效。 在 Leopard 和 Sn
我正在开发一个 Cocoa 应用程序,并且 NSToolbar 的外观得到了不同的结果。 我用于主窗口。 具体来说,我使用搜索字段作为最后一个 NSToolbarItem 并且,在 Snow Leop
我有基于 RubyCocoa 0.13.2 的应用程序。它适用于 10.5.8 及更早版本。当我尝试在 10.6 上运行它时,它在无限循环中崩溃。 10.6 内置了 0.13.2,但它与 10.5 的
我目前正在使我的 PyObjC 应用程序适用于 Snow Leopard,并且我成功地编译了一个独立的应用程序。我的问题是,鉴于这些错误,我如何使构建也与 Leopard 兼容? dyld: lazy
到目前为止,所有 Mac App Store 开发人员都知道所有应用程序都必须启用新的 OSX Lion Sandboxing。对于现有的应用程序,我们必须在 XCode 4.2 中启用它并设置数据迁
一切都在 10.5 上运行,但现在我的 PackageMaker 安装项目坏了。几天来我一直在与一个问题作斗争,要么 Snow Leopard (OS X 10.6.1) 破坏了 PackageMak
只是想知道是否有人成功地做到了这一点,以及使其发挥作用的步骤是什么。 提前致谢。 最佳答案 GrowlSafari 使用 mach_inject .. 它可以工作.. 我尝试过逆向工程,但我不明白为什
这是对 Controlling volume of running applications in Mac OS X via Objective-C 的跟进,其中解释了如何为 10.5 或更早版本设置
我在 Lion 上开发了一个 Cocoa 应用程序,现在我想添加与 Leopard 和 Snow Leopard 的兼容性。 我尝试将开发目标设置为 10.5,但在 Leopard 和 Snow Le
我正在尝试在 10.5 上部署一个在 Xcode 3.2.X (Snow Leopard) 上开发的 PyObjC(或 Cocoa-Python)应用程序,该应用程序在 10.6 系统上运行良好。 应
我刚刚在系统上安装了 Ubuntu 10.10 桌面以进行一些开发工作。我想在我的 MacBook 上运行 X 服务器环境而不是键盘跳动(Ubuntu 机器上的图形系统不是很好)。 在网上四处闲逛,我
我正在尝试在 Max OS-X 上使用 C++0x 和 Ogre 移植一个 C++ 项目,但我遇到了 OS-X 版本之间的可移植性问题。 我成功地使用 GCC 4.6.0 在 Mac OS-X 10.
较早的帖子提到,如果您以已注册的iOS开发人员身份登录,则https://developer.apple.com/downloads/index.action?name=Xcode的Xcode下载中列
我想更改 dmg 的默认图标,我喜欢使用默认图像音量图标的 Skype 或 Dropbox,但我无法通过查找器找到它。你知道我在哪里可以找到它吗? 感谢您的回答, 鲍里斯 最佳答案 好的,我在查找器中
我是一名优秀的程序员,十分优秀!