繁体   English   中英

Sprite Kit中的视频序列会导致混乱的中断

[英]Video sequence in Sprite Kit leads to messy interruptions

我想在Sprite Kit中创建一个视频序列,并使用以下代码:

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

视频序列可以正常工作,但是每个剪辑之间的中断很小。 如何实现无缝过渡?

提前致谢。

您要添加对AVQueuePlayer的调用。 如:

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

这会将文件加载到内存中并准备播放。 这将影响性能,具体取决于片段的大小。 它应该使您的过渡变得平滑。 但是,您将需要注意,就像status属性不是AVPlayerStatusReadyToPlay ,这将失败。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM