Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios AVAudioPlayerNode不';我不能放声音_Ios_Swift_Avfoundation_Swift3_Avaudioplayernode - Fatal编程技术网

Ios AVAudioPlayerNode不';我不能放声音

Ios AVAudioPlayerNode不';我不能放声音,ios,swift,avfoundation,swift3,avaudioplayernode,Ios,Swift,Avfoundation,Swift3,Avaudioplayernode,我试图用下面的代码生成声音。一切都很好,没有错误。但是当我执行这个代码时,没有声音。我如何解决这个问题 顺便说一下,我正在使用这个例子: var ae:AVAudioEngine var播放器:AVAudioPlayerNode? 变量混合器:AVAudioMixerNode var缓冲区:AVAudioPCMBuffer ae=AVAudioEngine() player=AVAudioPlayerNode() 混合器=ae.mainMixerNode; buffer=AVAudioPCMBu

我试图用下面的代码生成声音。一切都很好,没有错误。但是当我执行这个代码时,没有声音。我如何解决这个问题

顺便说一下,我正在使用这个例子:

var ae:AVAudioEngine
var播放器:AVAudioPlayerNode?
变量混合器:AVAudioMixerNode
var缓冲区:AVAudioPCMBuffer
ae=AVAudioEngine()
player=AVAudioPlayerNode()
混合器=ae.mainMixerNode;
buffer=AVAudioPCMBuffer(pcmFormat:player!.outputFormat(forBus:0),帧容量:100)
buffer.frameLength=100
//产生正弦波。
var sr:Float=Float(mixer.outputFormat(forBus:0.sampleRate)
var n_channels=mixer.outputFormat(forBus:0).channelCount
变量i:Int=0
而i
您的
AVAudioEngine
看起来像是一个局部变量-它将超出范围并被释放。把它赋给一个类实例变量,也许你会听到一些声音

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()