斯威夫特:如何延长短音的播放时间

Posted

技术标签:

【中文标题】斯威夫特:如何延长短音的播放时间【英文标题】:Swift: How to play short sounds longer 【发布时间】:2015-07-12 01:04:42 【问题描述】:

我正在使用 Swift 开发一个 SpriteKit 项目,我想播放我的 1 秒长的声音。例如,声音文件是“beep”——我希望它扩展为“beeeeep”或“beeeeeeeeep”之类的东西。我尝试了几个选项来播放声音文件,但我找不到扩展它的方法。

目前,我正在使用 SKAction 播放声音:

var beep = SKAction.playSoundFileNamed("beep.caf", waitForCompletion: false)
runAction(beep)

有人知道怎么做吗?

【问题讨论】:

也许将waitForCompletion 设置为true 并将runAction(beep) 放入循环中。 如果你放慢声音让它播放更长时间有意义吗? @M.kazemAkhgary 我实际上已经尝试过这种方法,但我没有得到正确的结果。输出类似于“哔哔哔”。 @neo No. 放慢声音会改变音高。所以你会听到“BBEEEEEEEEP”而不是微小的“哔”声。 我想如果你剪掉声音的第一部分。你不会得到“哔哔哔”......这实际上是合成器,音序器如何​​从1秒的声音效果中创建一个长的声音效果。他们从声音材料的一部分而不是整个声音制作一个循环。你可能需要程序来做到这一点。但如果它不支持caf,您可以将其转换为wav,这是一种非常流行的格式,并且大多数工具都支持wav。 【参考方案1】:

AVAudioPlayer 有一个rate 属性,可以让您以一半到两倍的速度播放。如果一半有效,您可以使用它。

如果这不起作用,您可以使用AVComposition 从您的声音文件中创建复合音轨。您可以选择声音文件的各个部分,然后随意将它们拼接在一起。

【讨论】:

以上是关于斯威夫特:如何延长短音的播放时间的主要内容,如果未能解决你的问题,请参考以下文章

Linux命令延长音频文件的持续时间

如何延长软件的试用期

如何在 Symfony 中延长会话 cookie 的生命周期?

如何在opencart中延长会话超时[重复]

如何延长 SQL 查询的超时时间

java - 如何延长过期时间java json web token?