首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SKVideoNode不显示视频

SKVideoNode不显示视频
EN

Stack Overflow用户
提问于 2014-04-10 17:02:52
回答 4查看 2.8K关注 0票数 2

我试图使用雪碧工具包和SKVideoNode在iOS 7.1上显示一个视频。苹果的文档让这一切看起来很直接。“雪碧工具包编程指南”中的一个例子:

代码语言:javascript
复制
SKVideoNode *sample = [SKVideoNode videoNodeWithVideoFileNamed:@"sample.m4v"];
sample.position = CGPointMake(CGRectGetMidX(self.frame),
[self addChild: sample];
[sample play];

我正在尝试相同的代码,却没有看到任何视频。SKVideoNode确实在节点层次结构中。我也尝试过多个视频,都是H.264 AAC。

我发现了一个有类似问题的人,这里。他们似乎通过实例化一个AVPlayer来解决这个问题。也不给我看视频。想法?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-04-10 21:59:42

先做几件事:

  1. 您必须将Foundation.framework添加到项目中。
  2. 确保您已将视频文件添加到项目中。
  3. 确保您的视频文件是以下格式之一:.mov .mp4 .m4v .3gp .3gpp

尝试下面的示例代码:

代码语言:javascript
复制
#import "MyScene.h"
#import <AVFoundation/AVFoundation.h>

@implementation MyScene
{
     AVPlayer *_player;
     SKVideoNode *_videoNode;
}

-(id)initWithSize:(CGSize)size
{
    if (self = [super initWithSize:size])
    {
        [self setupMovie];
    }
    return self;
}

-(void)setupMovie
{
    NSURL *fileURL = [NSURL fileURLWithPath: [[NSBundle mainBundle] pathForResource:@"loop" ofType:@"mov"]];
    _player = [AVPlayer playerWithURL: fileURL];

    _videoNode = [[SKVideoNode alloc] initWithAVPlayer:_player];
    _videoNode.size = CGSizeMake(200, 100);
    _videoNode.position = CGPointMake(150, 150);

    [self addChild:_videoNode];

    _player.volume = 1.0;
    [_videoNode play];
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    //
}

-(void)update:(CFTimeInterval)currentTime
{
    //
}

@end
票数 4
EN

Stack Overflow用户

发布于 2014-04-21 09:23:11

我刚刚用Prism,MPEG4视频编码器转换视频文件的格式来解决这个问题。希望能帮上忙。

票数 2
EN

Stack Overflow用户

发布于 2015-12-10 08:10:07

我知道这个问题大约在20个月前就被问到了,但我认为我也应该分享我的经验(这可能对那些正在研究SKVideoNode并面临同样问题的程序员有所帮助,这里的情况和我的情况是一样的,下面也提到了),与SKVideoNode有关,视频视图显示相关的问题。

我最近正在探索Sprite Kit,在那里我发现SKVideoNode可以在SKScene上播放视频文件。我创建了一个从GameScene继承的SKScene,并在场景中添加了一个UIImageView作为backgroundImage实例([self.scene.view addSubview:aView]);接下来,我创建了一个SKVideNode's实例以及其他UIKit子视图和添加到scene.viewsceneSKNode childs。

我配置了SKVideNode's的代码,正如它在类参考文档中提到的那样,我构建并运行了这个应用程序来查看视频播放。但是除了视频之外,屏幕上所有的东西都出现了,当我增加设备的音量时,我能够听到视频文件的声音(音频)。

因为我能够听到音频,所以我认为我错过了一些配置,或者它们是一些问题,因为视频视图是不可见的。

我尝试了一些排列和组合来使用AVPlayer,不同的文件格式,但在此之后,我开始挖掘视图layeringz index的概念,看看视频是否在背景图像或任何其他视图后面,还是相同的行为。

最后,我从屏幕上删除了所有的childsubviews (包括背景图像),并试图播放视频,这次视频视图在屏幕上是可见的。

简而言之,我用上述行为得出的结论是,“如果使用Sprite Kit's SKVideoNode 想要播放视频,而不是在 SKScene 实例中播放,而不是在任何 UIKit 视图上,因为如果我们试图在已经存在E 246 UIKit <代码>E 150视图的位置添加 SKVideoNode 实例,则SKVideoNode的实例是不可见的。”

SpriteKit而言,它在场景中包含了SKViewSKScene,允许程序员在游戏中同时使用SpriteKitUIKit元素,但是这些类型的问题可能导致在选择我们想要使用的视觉元素类型时出现妥协。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22994462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档