###swift 保存した音声がAVAudioPlayerで再生されない。
swiftでAVFoundationを使った録音・再生アプリを作っており、録音したデータをuserDefaultsに保存してTableViewで再生させようとしているのですが、アプリを再起動するとtableViewCellに読み込まれている音声データが再生されません。
例えば音声を いくつか録音 ->再起動 -> また新たに録音、とすると、新しい録音は再起動されていないため正常に再生されますが、再起動前に録った録音データは再生されません。
発生している問題・エラーメッセージ
Error Domain=NSOSStatusErrorDomain Code=2003334207 "(null)"
該当のソースコード
swift
1//録音ボタン。MyRecordクラスで音声データのurlや日付を管理してます。 2@IBAction func record(_ sender: Any) { 3 //~~~省略~~~ 4 let session = AVAudioSession.sharedInstance() 5 try! session.setCategory(AVAudioSession.Category.playAndRecord) 6 try! session.setActive(true) 7 8 let settings = [ 9 AVFormatIDKey: Int(kAudioFormatMPEG4AAC), 10 AVSampleRateKey: 44100, 11 AVNumberOfChannelsKey: 2, 12 AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue 13 ] 14 15 16 audioRecorder = try! AVAudioRecorder(url: myRecord.url!, settings: settings) 17 audioRecorder.delegate = self 18 audioRecorder.record() 19 self.isRecording = true 20 21 //~~~省略~~~ 22 23 24//再生。ここのtryでエラーが起きてしまいます。 25 func play(myRecord: MyRecord){ 26 var myRecord = myRecord 27 do{ 28 audioPlayer = try AVAudioPlayer(contentsOf: myRecord.url!) 29 audioPlayer.delegate = self as? AVAudioPlayerDelegate 30 audioPlayer.play() 31 myRecord.isPlaying = true 32 }catch let error {print("(error)")} 33 } 34
試したこと
試してみると各cellに音声のurlは正しく読み込まれています。ただなぜかアプリの再起動をすると音声のurlからの再生を失敗します。調べた結果、AVAudioRecorderやAVAudioPlayerを使うにはAVAudioSessionの設定をしなければならないようで、再起動の際もどこかで設定を行わなければいけないのかなと思ったのですが、どこにどの設定を追加すればいいのかわかりません。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー