问题描述
我正在尝试通过其结合发布者跟踪 AVAudioPlayerNode 的播放状态:
import Cocoa
import AVFoundation
import Combine
@main
class AppDelegate: NSObject,NSApplicationDelegate {
let engine = AVAudioEngine()
let player = AVAudioPlayerNode()
var cancellable: AnyCancellable?
func applicationDidFinishLaunching(_ aNotification: Notification) {
cancellable = player.publisher(for: \.isPlaying)
.sink { newValue in
print("is playing: \(newValue)")
}
let url = Bundle.main.url(forResource: "blues",withExtension: "aiff")!
let file = try! AVAudioFile(forReading: url)
let buffer = AVAudioPCMBuffer(pcmFormat: file.processingFormat,frameCapacity: UInt32(file.length))!
try! file.read(into: buffer)
engine.attach(player)
engine.connect(player,to: engine.mainMixerNode,format: file.processingFormat)
player.scheduleBuffer(buffer,at: nil,options: .loops,completionHandler: nil)
try! engine.start()
player.play()
}
}
接收器在初始化时只会被调用一次,以后再也不会调用了。我希望它在播放开始时被调用,但它没有......知道为什么吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)