gpt4 book ai didi

swift - 如何在歌曲重复时无滞后/延迟地循环背景音乐(无缝)

转载 作者:行者123 更新时间:2023-11-28 12:13:46 25 4
gpt4 key购买 nike

我正在尝试制作一款背景音乐循环播放的游戏。我在 Adob​​e Audition(类似于 audacity)中制作了歌曲文件,当我在 Adob​​e Audition 中循环播放它时,它会按照我想要的方式循环播放。

但是,当我在 Xcode 中播放它时,它在循环之间有延迟。我正在使用 AVFoundations 播放声音。

我到处搜索,但找不到问题的解决方案。

有什么方法可以循环播放音频文件而中间没有任何滞后? (我相信它叫做“无缝循环”)

代码如下:

class GameScene: SKScene {
...// Other Code

var ButtonAudio = URL(fileURLWithPath: Bundle.main.path(forResource: "Gamescene(new)", ofType: "mp3")!)
var ButtonAudioPlayer = AVAudioPlayer()

... //Other Code

}

当我调用它时:

 override func didMove(to view: SKView) {

...//Code

ButtonAudioPlayer = try! AVAudioPlayer(contentsOf: ButtonAudio, fileTypeHint: nil)
ButtonAudioPlayer.numberOfLoops = -1
ButtonAudioPlayer.prepareToPlay()
ButtonAudioPlayer.play()

...//More Code
}

有人可以帮我解决这个问题吗?

提前致谢!

最佳答案

您可以使用 AVPlayerLooperAVQueuePlayer做这个。

import UIKit
import AVFoundation

class ViewController: UIViewController {

var queuePlayer = AVQueuePlayer()
var playerLooper: AVPlayerLooper?

override func viewDidLoad() {
super.viewDidLoad()

guard let url = Bundle.main.url(forResource: "Gamescene(new)", withExtension: "mp3") else { return }
let playerItem = AVPlayerItem(asset: AVAsset(url: url))
playerLooper = AVPlayerLooper(player: queuePlayer, templateItem: playerItem)
queuePlayer.play()
}
}

关于swift - 如何在歌曲重复时无滞后/延迟地循环背景音乐(无缝),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47605956/

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