AVAudioPlayer播放音频文件时没声音

简介: AVAudioPlayer播放一个mp3文件时,居然没有声音。mp3文件是放在工程里面的,路径没有错误但就是死活没有声音。 func playSound() { let notifyUrl = NSBundle.

AVAudioPlayer播放一个mp3文件时,居然没有声音。mp3文件是放在工程里面的,路径没有错误但就是死活没有声音。

func playSound() {
        let notifyUrl = NSBundle.mainBundle().pathForResource("notify", ofType: "mp3")
        //let notifyUrl = NSBundle.mainBundle().resourcePath?.stringByAppendingPathComponent("notify.mp3")
        if let mp3 = notifyUrl {
            let url = NSURL(fileURLWithPath: mp3)
            
            //            var filemanager = NSFileManager()
            //            let result = filemanager.fileExistsAtPath(mp3)
            //            println("result=\(result)")
            
            AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil)
            
            var error:NSError?
            var avAudioPlayer = AVAudioPlayer(contentsOfURL: url, error: &error) 
            if error != nil {
                println(error)
            } else {
                avAudioPlayer.volume = 1.0
                avAudioPlayer.prepareToPlay()
                avAudioPlayer.play()
            }
        }
    }

 解决方法是把avAudioPlayer定义为全局变量的时候就有声音了,是不是很神奇。应该是被内存回收了所以没有声音,记得要定义为全局变量

var avAudioPlayer:AVAudioPlayer?
func playSound() {
        let notifyUrl = NSBundle.mainBundle().pathForResource("notify", ofType: "mp3")
        //let notifyUrl = NSBundle.mainBundle().resourcePath?.stringByAppendingPathComponent("notify.mp3")
        if let mp3 = notifyUrl {
            let url = NSURL(fileURLWithPath: mp3)
            
            //            var filemanager = NSFileManager()
            //            let result = filemanager.fileExistsAtPath(mp3)
            //            println("result=\(result)")
            
            AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil)
            
            var error:NSError?
            //var avAudioPlayer = AVAudioPlayer(contentsOfURL: url, error: &error)
            avAudioPlayer = AVAudioPlayer(contentsOfURL: url, error: &error)
            if error != nil {
                println(error)
            } else {
                avAudioPlayer?.volume = 1.0
                avAudioPlayer?.prepareToPlay()
                avAudioPlayer?.play()
            }
        }
    }

 

目录
相关文章
使用SoundPool播放音频文件,使用简单
使用SoundPool播放音频文件,使用简单
109 0
|
编解码
vlc可以播放这个m3u8但是LivePlayer只有声音没画面
vlc可以播放这个m3u8但是LivePlayer只有声音没画面
1602 0
|
编解码 Shell API
MediaPlayer音频与视频的播放介绍
Android多媒体中的——MediaPlayer,我们可以通过这个API来播放音频和视频该类是Androd多媒体框架中的一个重要组件,通过该类,我们可以以最小的步骤来获取,解码和播放音视频。 它支持三种不同的媒体来源: 本地资源 内部的URI,比如你可以通过ContentResolver来获取 外部URL(流)对于Android所支持的的媒体格式列表 1.相关方法详解 1)获得MediaPlayer实例: 可以直接new或者调用create方法创建: MediaPlayer mp = new MediaPlayer(); MediaPlayer mp = MediaPlaye
157 0
88.播放声音和音效
88.播放声音和音效
259 0
88.播放声音和音效
|
Windows C++
VC++中播放声音wav
因为只需在Windows上执行,先想到用MCI接口。试了一下,用mciSendCommand可以实现基本的播放wav文件的功能。但循环播放wav就麻烦了,必须向窗口传送MM_MCINOTIFY消息。
1896 0
|
iOS开发
iOS开发音频播放基础——AVAudioPlayer的应用
iOS开发音频播放基础——AVAudioPlayer的应用
253 0
iOS开发音频播放基础——AVAudioPlayer的应用
|
存储 Android开发 内存技术
使用AudioRecord和AudioTrack来录制和播放音频
使用AudioRecord和AudioTrack来录制和播放音频
674 0