开发者

Playing two QTMovie's synchronously

开发者 https://www.devze.com 2023-01-23 08:55 出处:网络
I have a Cocoa application that should play two different QTMovie objects completely synchronized. Both movies are equal in resolution, size etc. but might have a different length. The movies are comp

I have a Cocoa application that should play two different QTMovie objects completely synchronized. Both movies are equal in resolution, size etc. but might have a different length. The movies are compressed and it's necessary that they are multithreaded.

My current aproach is:

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];

Done in the play-buttons ClickHandler.

In 9 of 10 cases this works, but sometimes the movies are played asynchronously. I'm also sure they will become async in case of high cpu load.

Any ideas? Thanks a lot.


I don't believe there's any supported way to do this in the API. You might have to sync them periodically.

To do this, set up a timer that sets the precise time of the second movie to that of the first every second or half-second. If either goes over the other's max duration, stop the timer and let it run normally.

0

精彩评论

暂无评论...
验证码 换一张
取 消