gpt4 book ai didi

ios - SKVideoNode 中的视频在 Xcode 模拟器中工作正常,但无法在大多数设备上播放

转载 作者:行者123 更新时间:2023-11-30 14:00:37 25 4
gpt4 key购买 nike

我正在开发一个适用于 Swift 和 Sprite Kit 的应用程序(xCode 6.4,目前正在为 iOS 8.4 构建)。我将 SKVideoNode 与 AVPlayer 结合使用来播放全屏视频。代码如下:

    let path = NSBundle.mainBundle().pathForResource("SPLASH_x", ofType:"mov")
let vUrl = NSURL.fileURLWithPath(path!)

let asset = AVAsset.assetWithURL(vUrl) as? AVAsset
let playerItem = AVPlayerItem(asset: asset)
let player = AVPlayer(URL: vUrl)
SplashVideo = SKVideoNode(AVPlayer: player)
SplashVideo!.xScale = self.size.width / SplashVideo!.size.width
SplashVideo!.yScale = self.size.height / SplashVideo!.size.height
SplashVideo!.position = CGPointMake(self.frame.midX, self.frame.midY)
self.addChild(SplashVideo!)

var observer: AnyObject? = nil
observer = player.addPeriodicTimeObserverForInterval(CMTimeMake(1,30), queue: dispatch_get_main_queue(),
usingBlock: { (time: CMTime) -> Void in
let secs:Float64 = CMTimeGetSeconds(time)
println("I think it's playing")
if (secs > 0.01) {
self.hideBackground()
println("I think I'm done observing. Background hidden!")
player.removeTimeObserver(observer!)
}
})
println("I think I'm playing the splash video:")
SplashVideo!.play()

(如果不清楚,这发生在 didMoveToView 中;我在文件顶部导入了 Foundation、AVFoundation 和 SpriteKit)。

这在模拟器中运行良好;如果我为我的 iPad 构建并运行,则什么也不会发生 - 它会显示黑屏,或者如果我删除时间观察器(以便背景永远不会被隐藏),我只会看到背景(背景是电影 - 我在视频播放开始时遇到黑色闪光,并使用时间观察器作为掩蔽技术来隐藏它)。我的一位用户报告说,这对他一直有效,直到他升级到 iOS9(不太担心),另一位用户报告说,他听到了 .mov 文件附带的音频,但看不到视频本身(更担心) )。所以我遇到了各种非工作行为,这是最好的错误。我所说的最好是指最坏的。

我尝试过的事情:

  1. 构建时直接链接Foundation、AVFoundation、SpriteKit的各种版本和组合。
  2. 使用 AVPlayerLayer 而不是 SpriteKit(对我来说行为没有改变,没有部署,所以我不知道它是否会对我的测试人员有帮助)。
  3. 完全删除时间观察器(没有变化)。
  4. 在互联网上搜索(没有帮助)。
  5. 把我的头发扯下来(哎哟)。

一切都无效。现在我秃头了。也很悲伤。

最佳答案

回答我自己的问题:经过多次试验和错误,似乎您无法在 iOS9 中缩放 SKVideoNode (或者可能从未支持过?文档不清楚)。确实,无论我做什么,xCode 7 的模拟器都不会播放视频,这没有帮助。无论如何,您可以做的就是更改节点的大小属性(并且,我猜,让 Sprite Kit 进行缩放?文档似乎参差不齐),这似乎有效:

let asset = AVAsset.assetWithURL(vUrl) as? AVAsset
let playerItem = AVPlayerItem(asset: asset)
let player = AVPlayer(URL: vUrl)
SplashVideo = SKVideoNode(AVPlayer: player)
SplashVideo!.size = self.size
SplashVideo!.position = CGPointMake(self.frame.midX, self.frame.midY)
self.addChild(SplashVideo!)

关于ios - SKVideoNode 中的视频在 Xcode 模拟器中工作正常,但无法在大多数设备上播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33044195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com