У меня два AVPlayer, играющих две половины фильма шириной 2048 пикселей.Мне нужно, чтобы они были синхронизированы, потому что есть объекты, движущиеся от одного к другому.Однако я всегда получаю небольшую задержку (я не могу придумать, как измерить эту задержку) между AVPlayers, начинающими играть.Вот код, который я использую.
-(void) addMovieToViewWithTag:(NSInteger)tag{
NSBundle *bundle = [NSBundle mainBundle];
NSURL *theMovieLeftURL = nil;
NSURL *theMovieRightURL = nil;
if (bundle)
{
NSString *movieLeftPath = [bundle pathForResource:@"left_video" ofType:@"mp4"];
if (movieLeftPath)
{
theMovieLeftURL = [NSURL fileURLWithPath:movieLeftPath];
}
}
if (bundle)
{
NSString *movieRightPath = [bundle pathForResource:@"right_video" ofType:@"mp4"];
if (movieRightPath)
{
theMovieRightURL = [NSURL fileURLWithPath:movieRightPath];
}
}
AVPlayer* player = [[AVPlayer alloc]initWithURL:theMovieLeftURL];
AVPlayer* rightPlayer = [[AVPlayer alloc]initWithURL:theMovieRightURL];
AVPlayerLayer* layerLeft = [AVPlayerLayer playerLayerWithPlayer:player];
AVPlayerLayer* layerRight = [AVPlayerLayer playerLayerWithPlayer:rightPlayer];
[layerLeft setFrame:CGRectMake(0, 0, 1024, 768)];
[layerRight setFrame:CGRectMake(0, 0, 1024, 768)];
//layerLeft.frame = [self.scrollView viewWithTag:tag].bounds;
NSInteger ntag = tag+1;
[[self.scrollView viewWithTag:tag].layer addSublayer:layerLeft];
[[self.scrollView viewWithTag:ntag].layer addSublayer:layerRight];
//[self.view.layer addSublayer:layer];
CMTime delay= CMTimeMakeWithSeconds(10, 1);
[rightPlayer play];
[player play];
[self.scrollView setContentOffset:CGPointMake(1024, 0 ) animated:NO];
self.timeObserver = [player addBoundaryTimeObserverForTimes:[NSArray arrayWithObject:[NSValue valueWithCMTime:delay]] queue:NULL usingBlock:^{
[self setTimeObserver:nil];
[self doAnimatedScrollTo:CGPointMake(0, 0)];
}];
}
Интересно, я что-то не так делаю?Я предполагаю, что есть задержка между RightPlayer и игроком, но я не могу понять, как ее устранить.Я попытался использовать seekToTime: с небольшой задержкой, но действительно трудно найти правильную задержку.Можно ли вообще их играть одновременно?Большое спасибо.