2010-11-02 70 views
1

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

我目前的aproach是:

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负载过高的情况下变成异步的。

任何想法?非常感谢。

回答

0

我不相信在API中有任何支持的方式来执行此操作。您可能需要定期同步它们。

要做到这一点,请设置一个计时器,将第二部电影的精确时间设置为每秒或半秒的精确时间。如果要么超过另一个的最大持续时间,停止计时器,让它正常运行。

+0

谢谢,我试过类似 [leftMovie setCurrentTime:[rightMovie currentTime]]; 但事情会变得更糟。 我相信我必须仔细看看QuickTime API而不是QTKit。 – 2010-11-21 13:57:59