Swift - AVAudioPlayer 不播放声音
Posted
技术标签:
【中文标题】Swift - AVAudioPlayer 不播放声音【英文标题】:Swift - AVAudioPlayer not playing sound 【发布时间】:2016-03-31 09:32:42 【问题描述】:我有一个名为speeding.mp3
的声音,我正在尝试通过在类的根目录中使用它来创建一个 AVAudioPayer 实例:
let speedingAudioPlayer = try! AVAudioPlayer(contentsOfURL: NSBundle.mainBundle().URLForResource("speeding", withExtension: "mp3")!)
然后,当我运行应用程序时,它会引发错误,但我不知道为什么会这样。 speeding.mp3
文件位于 Build Phases 的 Bundle Resources 下拉列表中,因此它应该可以找到它。如果我尝试在模拟器中打印出 URL 并将其粘贴到 Safari 中,它会像往常一样加载和播放文件。我正在将 AVFoundation 导入到类中,并将框架导入到项目中。
【问题讨论】:
【参考方案1】:使用这段代码 sn-p 来调试你的错误,
if let URL = NSBundle.mainBundle().URLForResource("speeding", withExtension: "mp3")
do
let speedingAudioPlayer = try AVAudioPlayer(contentsOfURL: URL)
catch let error as NSError
print(error.localizedDescription)
else
print("No such file exist")
【讨论】:
它只是停在第三行并出现错误说Thread 1: breakpoint 1.2
您能否列出例外情况,具体说明了什么?
它什么也没说,只在运行时发生。
好的,放异常断点并使用调试器看看那里实际发生了什么
好吧,现在除了查看您的代码之外别无他法。您能以某种方式将其放在 Dropbox 或 github 中,以便我可以查看它。【参考方案2】:
我发现另一个问题是将 var 放在类之外,否则它会被电话释放。
AVAudioPlayer Object Sound Not Playing - Swift
【讨论】:
【参考方案3】:import UIKit
import AVFoundation
class CustomAudioPlayer
var audioPlayer : AVAudioPlayer!
override func viewDidLoad()
super.viewDidLoad()
playSound("sound_file_name")
func playSound(soundName: String)
let alertSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(soundName, ofType: "mp3")!)
do
audioPlayer = try AVAudioPlayer(contentsOfURL:alertSound)
audioPlayer.prepareToPlay()
audioPlayer.play()
catch
print("Error getting the audio file")
试试这个代码来播放声音。
【讨论】:
以上是关于Swift - AVAudioPlayer 不播放声音的主要内容,如果未能解决你的问题,请参考以下文章
AVAudioPlayer Swift 3不播放声音[重复]