2015-10-08 4 views
0

Следующий код должен записывать аудио, а затем воспроизводить его. Все, наверное, хорошо с записью, но она не воспроизводится. Кто-нибудь сталкивался с теми же проблемами или кто-нибудь знал, что я могу сделать, чтобы исправить этот код?Запись звука выглядит нормально, но воспроизведение не работает

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

ответ

0

Перед воспроизведением необходимо остановить рекордер (закрыть звуковой файл).

в @IBAction func Play(sender: AnyObject), объявление об этом на вершине:

soundRecoreder.stop() 

Это от абстрактного метода stop из documentation: записи

Остановки и закрывает аудиофайл.

+0

спасибо, но это не работает, может быть, у нас проблема с «recordSettings»? –

+0

Принесите его к уху. Может быть, это уже работает. – antonio

Смежные вопросы