我有一个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老手,他可以告诉我我做错了什么。
提前谢谢。
答案 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()
}
}