1

有一个在 10.4 中运行良好的 Cocoa 视频捕获应用程序。它使用 NSThread 来启动视频捕获驱动程序。当应用程序刚启动时,视频捕获非常慢(1-2 fps)。但在调整 UI 窗口大小(或将窗口从背景移至前台)后,视频捕获速度恢复正常。这只发生在 10.5 中。

4

3 回答 3

3

不确定具体原因,但您应该使用 Instruments 来弄清楚发生了什么

于 2008-11-05T05:45:03.693 回答
2

“我的应用程序很慢”的答案总是“Run Shark”。偶尔,它现在是“Run Instruments”,但在大多数情况下,我发现 Shark 比 Instruments 更快地给我答案。

Shark 当然是在 /Developer/Applications 中。如果你没有安装 CHUD,那就去做吧,否则你就错过了。

于 2008-11-05T08:50:05.800 回答
1

我们有一个应用程序,它使用类似于您描述的多线程视频捕获和录制。我们使用 libdc1394 从 Firewire 摄像头进行捕获,使用 NSOpenGLView 进行显示,使用 QuickTime 进行视频编码。来自摄像机的捕获与 OpenGL 视频显示和 QuickTime MPEG4 编码在单独的线程上。

几个月前,我们将此应用程序迁移到 Leopard,没有任何不良影响。事实上,每秒 30 帧视频的 CPU 负载在 Leopard 上有所降低。

您是否检查过以确保您正确处理所有 NSLock 等?我们遇到了性能问题,一个线程上的锁正在停止另一个线程上的操作,从而降低了我们的帧率。也许您可以考虑只在绝对需要它们的区域周围放置锁,或者通过实现操作的无锁版本。

于 2008-11-07T17:25:52.530 回答