2015-11-05 85 views
0

我想創建雪碧套件視頻序列,並使用下面的代碼:視頻序列導致凌亂中斷

@interface VideScreenNode() 
@end 

@implementation VideScreenNode 

- (void)setupVideoSequence 
{ 
    AVPlayerItem * intro = [AVPlayerItem playerItemWithURL:[self geturlFromFileName:@"Video1" andType:@"mp4"]]; 
    AVPlayerItem * video1 = [AVPlayerItem playerItemWithURL:[self geturlFromFileName:@"Video2" andType:@"mp4"]]; 
    AVPlayerItem * video2 = [AVPlayerItem playerItemWithURL:[self geturlFromFileName:@"Video3" andType:@"mp4"]]; 
    AVPlayerItem * video3 = [AVPlayerItem playerItemWithURL:[self geturlFromFileName:@"Video4" andType:@"mp4"]]; 
    AVPlayerItem * video4 = [AVPlayerItem playerItemWithURL:[self geturlFromFileName:@"Video5" andType:@"mp4"]]; 
    AVPlayerItem * outro = [AVPlayerItem playerItemWithURL:[self geturlFromFileName:@"Video6" andType:@"mp4"]]; 

    AVQueuePlayer * queuePlayer = [[AVQueuePlayer alloc] initWithItems:@[intro, video1, video2, video3, video4, outro]]; 
    SKVideoNode * sequenceNode = [[SKVideoNode alloc] initWithAVPlayer: queuePlayer]; 

    sequenceNode.position = CGPointMake(512, 384); 
    [sequenceNode play]; 
    [self addChild:sequenceNode]; 
} 

#pragma mark - helper 

- (NSURL *)geturlFromFileName:(NSString *)name 
         andType:(NSString *)type 
{ 
    return [NSURL fileURLWithPath: [[NSBundle mainBundle] pathForResource: name ofType:type]]; 
} 

視頻序列工作得很好,但每間小中斷夾。我如何實現無縫過渡?

在此先感謝。

+0

你有沒有聽說過一種叫做單身人士的事情? –

回答

2

您想在AVQueuePlayer的呼叫中添加您的電話號碼。如:

[queuePlayer prerollAtRate:float completionHandler:^(BOOL finished)completionHandler]; 

這會將這些文件加載​​到內存中並使它們準備播放。這將對性能產生影響,具體取決於剪輯的大小。它應該消除你有的過渡。但是,您需要注意,如果status屬性不是AVPlayerStatusReadyToPlay,則會失敗。

+0

謝謝!我還設法通過使用AVMutableComposition來消除差距 –