问题标签 [skvideonode]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - SpriteKit SKVideoNode 未出现在屏幕上,但可以听到声音
我正在尝试使用 SpriteKit 让视频出现在屏幕上,但看不到它。屏幕底部的 FPS 计数器更新为大约 60 FPS,这是有道理的。视频的音频也可以听到。删除改变 videoNode 位置的代码行没有任何作用。
ios - ARKit / SpriteKit - 将 pixelBufferAttributes 设置为 SKVideoNode 或以另一种方式在视频中制作透明像素(色度键效果)
我的目标是在真实环境中使用ARKit
. 动画角色是视频的一部分,在以下视频快照中呈现:
使用以下代码可以毫无问题地显示视频本身:
此代码的结果如预期的那样显示在下面应用程序的屏幕截图中:
但是正如你所看到的,人物的背景不是很好,所以我需要让它消失,以创造人物实际上站在水平平面上的错觉。我试图通过对视频制作色度键效果来实现这一点。
- 对于那些不熟悉色度键的人来说,这是有时在电视上看到的“绿屏效果”的名称,用于使颜色透明。
我对色度键效果的方法是创建一个基于 的自定义过滤器"CIColorCube" CIFilter
,然后使用 .将过滤器应用于视频AVVideoComposition
。
首先,是创建过滤器的代码:
func view(_ view: ARSKView, nodeFor anchor: ARAnchor) -> SKNode?
然后通过修改我之前编写的函数将过滤器应用于视频的代码:
alpha = 0.0
如果像素颜色与背景的色调范围匹配,则该代码应该替换视频每一帧的所有像素。但我没有得到透明像素,而是让这些像素变黑,如下图所示:
现在,尽管这不是想要的效果,但我并不感到惊讶,因为我知道这是 iOS 显示带有 alpha 通道的视频的方式。但这是真正的问题 - 当在 an 中显示普通视频时AVPlayer
,有一个选项可以将 an 添加AVPlayerLayer
到视图中,并设置pixelBufferAttributes
为它,让播放器层知道我们使用透明像素缓冲区,如下所示:
此代码为我们提供了一个具有透明背景 ( GOOD! ) 但大小和位置固定 ( NOT GOOD... ) 的视频,如您在此屏幕截图中所见:
我想达到同样的效果,但是 on SKVideoNode
,而不是 on AVPlayerLayer
。但是,我找不到任何设置pixelBufferAttributes
为 的方法SKVideoNode
,并且设置播放器层并不能达到预期的效果,ARKit
因为它是固定位置的。
我的问题是否有任何解决方案,或者是否有另一种技术可以达到相同的预期效果?
ios - SpriteKit 中的 SKVideoNode 问题,模拟器仅显示灰屏
在进入我的游戏构建之前尝试运行“剪切场景视频”。游戏效果很好。我创建了一个单独的场景,我将其命名为“StartScene”来播放我的过场动画。构建成功,但是当它到达模拟器上的过场动画部分时,我得到一个空白的灰色屏幕。我在网上搜索了很多视频的大小调整问题,但是 Apple Developer 说:
创建视频节点时,其 size 属性会初始化为视频内容的基本大小,但您可以根据需要更改它。视频内容会自动拉伸到新尺寸。
我从 Apple Developer 复制的示例代码:
这是我在 StartScene.swift 中播放过场动画的代码:
也许这是一个新手错误,通常只是格式化场景错误。我认为这会很简单。视频保存在 Assets 的 App 包中,是的,我确保名称与我在代码字符串中输入的匹配。最后一段代码只是我使用 touchesBegan 函数过渡到 GameScene 的过程。
objective-c - SKVideoNode 不考虑纵横比
我正在将带有 SKVideoNode 的 SKScene 映射到 SCNBox 的一侧。我正在努力使视频的宽高比正确。这是代码:
它忽略了任何纵横比设置,例如适合和填充。它只是将其压扁以适合边界框。将边界框设置得更大似乎没有帮助。即使在相对于视频的固定尺寸下,纵横比也会被忽略。
ios - SKVideoNode 停止播放 SKAudioNode
我正在尝试将背景视频和背景音乐添加到我正在创建的游戏中。为此,我正在创建一个 SKVideoNode 和一个 SKAudioNode。当我运行游戏时,视频播放正常,但大多数时候音乐不播放。如果没有创建 SKVideoNode,它就可以正常工作。我也尝试为音乐创建一个 AVAudioPlayer ,但这使得音乐播放的时间更少。我还尝试更改元素呈现的顺序,但这也没有做任何事情。有谁知道发生了什么?
swift - IOS如何取自定义可调整大小的SKVideoNode来引用自定义可调整大小的ARImageAnchor SCNPlane的位置和大小
目前,当我在手机上构建时,我看到 SCNPlane 出现在相机正在检测的图像上。SCNPlane 在调整到它检测到的图像大小时没有问题。我遇到的问题是使用 SCNPlane 并将其替换为 SKVideoNode 及其 SKScene ,它还可以根据图像自动调整其大小。
有任何想法吗?
谢谢你!
swift - ARKit SKVideoNode 在渲染上播放
主要问题:
我在之后添加此部分以澄清问题。-- 我可以暂停我的视频(我不希望它循环播放)。当我的节点出现时,我的节点会播放我的视频,即使它处于暂停状态。如果我的视频播放完毕并出现在视线中,它将重新启动。我想删除这种行为。
在我的应用程序中,我使用对象和对象从内部 3D 空间SKVideoNode
创建了一个。我用来确定何时找到特定图像,并从那里播放视频。一切都很好,花花公子,除了玩家决定在自己的时间玩,每次 AVPlayer 出现时;但是,它可能是每当附加到出现时。无论哪种方式,每次节点进入摄像机镜头时都会播放。我用AVPlayer(:URL)
SCNNode
SCNGeometry
ARKit
.ImageTracking
ARImageAnchor
SCNNode
AVPlayer
打印出费率,它是1,然而,它是0。
print("Play")
我使用 player.pause() 或 player.play() 为我的所有函数打印了某种打印函数,只要上面的速率发生变化,它们都不会被调用。如何找到改变播放器速率的原因?
我检查了原始的根节点,self.sceneview.scene.rootNode.childNodes
以确保我没有创建额外的 VideoNodes/SCNNodes/AVPlayers 等,而且似乎只有 1 个。
关于为什么 SKVideoNode/AVPlayer 在 SCNNode 进入使用 ARKit 的相机时播放的任何想法?提前致谢!
编辑1:
做了一个变通方法,仅确定用户何时单击此节点
然后在下一个函数里面,我把
其中 videoPlayer3D 是SCNNode
包含 SKVideoNode 的。
但是,我在com.apple.scenekit.scnview-renderer (17): EXC_BAD_ACCESS (code=2, address=0x16d8f7ad0)
上面标有“这里”的部分收到错误。似乎场景视图的渲染器正在尝试在渲染功能中更改我的视频节点,尽管我什至不使用该renderer(updateAtTime:)
功能,我只使用
确定我何时看到图像,即imageTracking
创建节点。有小费吗?
思想 1
出现错误,说明正在从方法渲染器的 SCNView 对象调用某些方法(这是我从错误中理解的),但我没有专门调用该节点。我认为可能会调用默认操作,因为节点即将查看,但是,我不能 100% 确定如何访问它或确定哪种方法。我使用的对象不是 SCNView 对象,我不相信它们继承自 SCNView 对象(查看第 1 段以查看使用的变量)。只是想删除每次在视图中播放的节点的“动作”。
添加:
如果有兴趣,为了关注我的视频播放器的创建,这里是。如果您还有什么想看的,请告诉我(不确定您还想看什么)并感谢您的帮助。
My3dPlayer 类:
努力1:
我试图通过以下方式停止跟踪:
上面,我试图重置配置。这只会导致它重置它看起来的平面,因为视频仍在渲染中播放。无论是暂停还是结束,它都会重置并重新开始或从中断的地方继续播放。
努力2:
我努力了
这会停止一切,因此相机甚至会冻结,因为没有任何东西被跟踪。在这里完全没用。
swift - 删除 SKVideoNode 不会停止来自视频节点的音频
我在我的 GameScene 中添加了一个 SKVideoNode。当我尝试删除视频时,视频图像消失,但音频继续播放。我试图在删除之前停止并暂停视频,但无论如何音频都会继续播放。
然后我删除了 touchesBegan 中的视频 -
我会错过什么?有没有办法独立停止 SKVideoNode 中的音频?
swift - Swift AVPlayer - 防止同时播放 2 个视频/音频
我正在使用 AVPlayer 在 SCNNode 中播放视频。我想阻止一次播放多个视频/音频。因此,如果一个视频正在播放,然后另一个视频开始播放,它将暂停上一个视频。一次只允许播放一个视频。我遇到的问题是,如果有 2 个节点在视图中,则它与 2 个视频的音频重叠。请帮忙!
我尝试在节点不在视野中时暂停视频,但如果同时有 2 个节点在视野中,我会遇到问题。
avplayer - iOS13 Beta-8 SKVideoNode+AVPlayer 显示黑屏
我的应用是播放 h.264 视频的 AR 应用。我们通过 AVPlayer 创建了 SKVideoNode,并将 SKVideoNode 设置为 SKScene,然后创建 SCNNode 来涉及这个 SKScene。
- 示例代码
========================我们使用这个SCNNode来播放视频。
它在 iOS12.4 之前运行良好,但是当我在 iOS13-beta 设备上对其进行测试时,它在听到声音时显示黑屏。