录制声音看起来不错,但播放不起作用

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”有问题?

以上是关于录制声音看起来不错,但播放不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Allegro 声音不起作用(播放 wav 文件)

添加自定义推送通知声音 ios5 不起作用

Youtube 在 PWA 中播放带声音的视频不起作用

为啥我使用 WinAPI C++ 录制的声音无法正常播放?

声音管理器 2 和播放列表自动播放下一首歌曲不起作用

快速播放声音似乎不适用于我的应用程序