gpt4 book ai didi

swift - AVFoundation - 播放 wav 文件(外部应用程序包)Swift 2.1

转载 作者:行者123 更新时间:2023-11-28 06:54:01 27 4
gpt4 key购买 nike

我只是(第一次)尝试使用 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.")

但事实并非如此。当我运行这个应用程序时,它只是继续打印“完成”。并退出。如果文件名/文件路径不正确,我会得到一个异常(所以它似乎实际上正在访问该文件)。

我正在尝试证明控制台应用程序的概念,该应用程序需要访问应用程序包之外的 wave 文件。关于我遗漏的任何提示?

最佳答案

我发现在执行您的 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com