首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AVAudioPlayerNode不播放声音

AVAudioPlayerNode不播放声音
EN

Stack Overflow用户
提问于 2016-10-10 12:52:39
回答 1查看 1.5K关注 0票数 5

我试着用下面的代码生成声音。一切都是好的,没有错误。但是当我执行这个代码时,没有声音。我怎样才能解决这个问题?

顺便提一下,我用的是这个例子:http://www.tmroyal.com/playing-sounds-in-swift-audioengine.html

代码语言:javascript
复制
var ae:AVAudioEngine
var player:AVAudioPlayerNode?
var mixer:AVAudioMixerNode
var buffer:AVAudioPCMBuffer

ae = AVAudioEngine()
player = AVAudioPlayerNode()
mixer = ae.mainMixerNode;
buffer = AVAudioPCMBuffer(pcmFormat: player!.outputFormat(forBus:0), frameCapacity: 100)
buffer.frameLength = 100

// generate sine wave.
var sr:Float = Float(mixer.outputFormat(forBus:0).sampleRate)
var n_channels = mixer.outputFormat(forBus:0).channelCount

var i:Int=0
while i < Int(buffer.frameLength) {
    var val = sinf(441.0*Float(i)*2*Float(M_PI) / Float(sr))
    buffer.floatChannelData?.pointee[i] = val * 0.5
    i+=Int(n_channels)
}

// setup audio engine
ae.attach(player!)
ae.connect(player!, to: mixer, format: player!.outputFormat(forBus: 0))

ae.prepare()
try! ae.start()
// play player and buffer
player!.scheduleBuffer(buffer, at: nil, options: .loops, completionHandler: nil)
player!.play()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-10 13:43:29

您的AVAudioEngine看起来像是一个局部变量--它将超出作用域并被取消分配。将其分配给类实例变量,您可能会听到一些声音。

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

https://stackoverflow.com/questions/39958750

复制
相关文章

相似问题

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