我只是尝试一下 Swift(这是第一次)。除了错误检查和正确的应用程序结构之外,我认为这应该播放音频:
import Foundation
import AVFoundation
var audioPlayer: AVAudioPlayer!
let file = "/Users/mtwomey/Desktop/test1/test1/a2002011001-e02.wav"
let url = NSURL(fileURLWithPath: file)
print(url)
audioPlayer = try! AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: file), fileTypeHint: "wav")
audioPlayer.play()
print("Done.")
然而事实并非如此。当我运行这个应用程序时,它只是继续打印“完成”。并退出。如果文件名/文件路径不正确,我会收到异常(因此它似乎实际上正在访问该文件)。
我正在尝试证明控制台应用程序的概念,该应用程序需要访问应用程序包之外的波形文件。关于我所缺少的内容有什么提示吗?
最佳答案
我发现执行 swift 文件时无法播放音频的主要问题是:命令行工具在 AVAudioPlayer 准备好播放之前退出(在异步操作完成之前)。
这是我的解决方案(使用DispatchGroup),它可以通过从命令执行我的Swift文件(用Swift 5.x编写)来播放我的mp3文件线条工具(无 Playground )。
import Foundation
import AVFoundation
var testAudio = AVAudioPlayer()
let path = FileManager.default.currentDirectoryPath + "/example.mp3"
let url = URL(fileURLWithPath: path)
let group = DispatchGroup()
group.enter()
DispatchQueue.main.async {
do {
testAudio = try AVAudioPlayer(contentsOf: url)
} catch let err {
print("Failed play audio: \(err)")
}
group.leave()
}
group.notify(queue: .main) {
print("play audio")
testAudio.play()
}
dispatchMain()
关于swift - AVFoundation - 播放 wav 文件(应用程序包外部)Swift 2.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34187398/