1

我有一个 Cocoa 应用程序,它应该完全同步播放两个不同的 QTMovie 对象。两部电影在分辨率、大小等方面都相同,但长度可能不同。电影是压缩的,因此它们必须是多线程的。

我目前的做法是:

NSMutableDictionary *movieAttributes1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                         [NSNumber numberWithBool:NO], QTMovieOpenAsyncOKAttribute,
                                         [NSNumber numberWithBool:YES], QTMovieOpenForPlaybackAttribute,
                                         nil];

[movieAttributes1 setValue:pathOfFile1 forKey:QTMovieFileNameAttribute];

NSMutableDictionary *movieAttributes2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                         [NSNumber numberWithBool:NO], QTMovieOpenAsyncOKAttribute,
                                         [NSNumber numberWithBool:YES], QTMovieOpenForPlaybackAttribute,
                                         nil];

[movieAttributes2 setValue:pathOfFile2 forKey:QTMovieFileNameAttribute];


QTMovie* leftMovie = [QTMovie movieWithAttributes:movieAttributes1 error:nil];
QTMovie* rightMovie = [QTMovie movieWithAttributes:movieAttributes2 error:nil];

....

[leftMovie play];
[rightMovie play];

在播放按钮 ClickHandler 中完成。

在 10 个案例中的 9 个案例中,这是可行的,但有时电影是异步播放的。我也确信在 CPU 负载高的情况下它们会变得异步。

有任何想法吗?非常感谢。

4

1 回答 1

0

我不相信在 API 中有任何支持的方式来做到这一点。您可能需要定期同步它们。

为此,请设置一个计时器,每隔一秒或半秒将第二部电影的精确时间设置为第一部电影的时间。如果其中一个超过另一个的最大持续时间,则停止计时器并让它正常运行。

于 2010-11-02T19:46:54.113 回答