iOS 8 swift 无法播放音频文件

Posted

技术标签:

【中文标题】iOS 8 swift 无法播放音频文件【英文标题】:Audio file not playing for iOS 8 swift 【发布时间】:2014-08-02 10:00:34 【问题描述】:

这是我正在使用的代码:

var aSound = NSURL(fileURLWithPath:  NSBundle.mainBundle().pathForResource("abc", ofType: "mp3"))

var audioPlayer = AVAudioPlayer()

        println(aSound)

        audioPlayer = AVAudioPlayer(contentsOfURL: aSound, error: nil)

        audioPlayer.prepareToPlay()

        audioPlayer.play()

我正在尝试打印文件的路径,这就是我在控制台中看到的。

file:///Users/<username>/Library/Developer/CoreSimulator/Devices/<some GUID>/data/Containers/Bundle/Application/<some different GUID>/HelloWorld.app/abc.mp3

我已通过从菜单中执行“将文件添加到项目”将 mp3 添加到我的项目中。 当我运行模拟器时,它会自动添加到上面的位置吗?

【问题讨论】:

Playing a sound with AVAudioPlayer - swift 的可能副本 - (audioPlayer 需要是一个 property 以便播放器不会过早重新分配) 谢谢马丁。我完全错过了该评论中的代码。让它工作。 【参考方案1】:
import UIKit
import AVFoundation

class ViewController: UIViewController 

    var audioPlayer = AVAudioPlayer()

    override func viewDidLoad() 
        super.viewDidLoad()

        var alertSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("fileName", ofType: "extension"))
        println(alertSound)
            AVAudiosession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil)
        AVAudioSession.sharedInstance().setActive(true, error: nil)

        var error:NSError?
        audioPlayer = AVAudioPlayer(contentsOfURL: alertSound, error: &error)
        audioPlayer.prepareToPlay()
        audioPlayer.play()
    


【讨论】:

【参考方案2】:
var audio: AVAudioPlayer = AVAudioPlayer()

@IBAction func playaudio(sender: AnyObject) //method for playing audio 

var audioPath = NSString(string: NSBundle.mainBundle().pathForResource("bus", ofType: "mp3")!)

    var error: NSError? = nil

    //instantiate the player
    audio = AVAudioPlayer(contentsOfURL: NSURL(string: audioPath as String), error: &error)
    audio.prepareToPlay()
    audio.play()


override func viewDidLoad() 


    super.viewDidLoad()

    // Do any additional setup after loading the view.

别忘了导入 AVFoundation 框架。

【讨论】:

【参考方案3】:

在 Swift 中使用这个函数发声(你可以在你想发声的地方使用这个函数。)

首先添加 SpriteKit 框架。

import SpriteKit
    func playEffectSound(filename: String)
         runAction(SKAction.playSoundFileNamed("\(filename)", waitForCompletion: false))
    
// use this function to play sound

    playEffectSound("Sound File Name With Extension")
// Example :- playEffectSound("BS_SpiderWeb_CollectEgg_SFX.mp3")

【讨论】:

以上是关于iOS 8 swift 无法播放音频文件的主要内容,如果未能解决你的问题,请参考以下文章

m4a 音频文件无法在 iOS 9 上播放

音频无法在 Cordova iOS 8 中播放

如何从 Swift 文件管理器播放音频文件?

Swift实现iOS录音与播放音频功能

如何使用 Swift 在 iOS 中同时录制和播放音频?

iOS Swift 从网络流中播放音频(aac)