录制声音看起来不错,但播放不起作用
Posted
技术标签:
【中文标题】录制声音看起来不错,但播放不起作用【英文标题】:Recording a sound looks ok but playing back doesn't work 【发布时间】:2015-10-08 13:42:40 【问题描述】:下面的代码是用来录制音频然后播放的。录音可能一切正常,但无法播放。有没有人遇到过同样的问题,或者有没有人知道我可以做些什么来修复这个代码?
var filename="/audioFile.caf"
var soundRecorder:AVAudioRecorder!
var soundPlayer:AVAudioPlayer!
override func viewDidLoad()
super.viewDidLoad()
self.setupRecorder()
func setupRecorder()
let recordSettings = [AVSampleRateKey : NSNumber(float: Float(44100.0)),
AVFormatIDKey : NSNumber(int: Int32(kAudioFormatMPEG4AAC)),
AVNumberOfChannelsKey : NSNumber(int: 1),
AVEncoderAudioQualityKey : NSNumber(int: Int32(AVAudioQuality.Medium.rawValue)),
AVEncoderBitRateKey : NSNumber(int: Int32(320000))]
var error:NSError?
do
soundRecorder=try AVAudioRecorder(URL: getFileURL(), settings: recordSettings)
soundRecorder.delegate=self
soundRecorder.prepareToRecord()
catch
func getCacheDictionary() -> String
let paths=NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)
return paths[0]
func getFileURL() -> NSURL
let path=getCacheDictionary().stringByAppendingString(filename)
let filePath=NSURL(fileURLWithPath: path)
return filePath
@IBAction func recordingButton(sender: UIButton)
soundRecorder.record()
@IBAction func Play(sender: AnyObject)
do
soundPlayer=try AVAudioPlayer(contentsOfURL: getFileURL())
soundPlayer.delegate=self
soundPlayer.prepareToPlay()
soundPlayer.play()
catch
@IBAction func PauseRecording(sender: AnyObject)
soundRecorder.pause()
【问题讨论】:
【参考方案1】:您必须在播放前停止录音机(关闭声音文件)。
在@IBAction func Play(sender: AnyObject)
,在顶部做广告:
soundRecoreder.stop()
这是来自documentation 的stop
方法的摘要:
停止录制并关闭音频文件。
【讨论】:
谢谢,但它不起作用,也许我们的“recordSettings”有问题?以上是关于录制声音看起来不错,但播放不起作用的主要内容,如果未能解决你的问题,请参考以下文章