iOS Xode:AVAudioPlayer没有正确播放WAV文件

时间:2016-12-30 23:12:07

标签: ios audio avaudioplayer

我有一个WAV文件,音调大约为18kHz。音频是16位PCM单声道。

我使用以下函数播放文件:

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老手,他可以告诉我我做错了什么。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

检查以下可能适合您的代码

import UIKit
import AVFoundation

class 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()
    }

}