2010-11-02 68 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