2016-12-30 25 views
1

我有一个18KHz左右音调的WAV文件。音频是16位PCM单声道。iOS Xode:AVAudioPlayer不能正确播放WAV文件

我使用下面的函数来播放该文件:

func playSound(name: String) { 
     let documents = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] 
     let path = documents.appending("/").appending(name) 

     let url = NSURL.fileURL(withPath: path) 

     do { 
      player = try AVAudioPlayer(contentsOf: url) 
      guard let player = player else { return } 

      player.prepareToPlay() 
      player.play() 
     } catch let error { 
      print(error.localizedDescription) 
     } 
    } 

当我发挥它在我的iOS设备10.2听说了一系列之间1000Hz的音调10000Hz的。我已经通过捕捉来分析渲染音频,并且频率图显示18kHz处的原始内容在那里,但在1000Hz到10000Hz之间也存在音调。当我使用VLC或任何其他桌面音频播放器播放相同的WAV文件时,我听不到这些音调(因为它们位于18kHz左右),所以我听不到这些音调。我怀疑上面的代码没有正确加载数据,或者播放器没有正确初始化,所以我需要一位经验丰富的iOS老手谁可以告诉我我做错了什么。

预先感谢您。

回答

0

这一个工作//

进口的UIKit 进口AVFoundation

类的ViewController:UIViewController的{

var audioPlayer = AVAudioPlayer() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    var alertSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("button-09", ofType: "wav")) 
    println(alertSound) 

    // Removed deprecated use of AVAudioSessionDelegate protocol 
    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() 
} 

} 强大的文本

+0

谢谢你,但我希望的我可能会做错的一个答案 – user1884325