前提・実現したいこと
iOSアプリで録音機能を実装、一旦tmpディレクトリに保存後、サーバーにアップロードしてディレクトリの音声削除、というフローを考えています。
AVFoundationを使用しています。
AVFoundationRecorder|GitHub
こちらのコードを参考にしながら+いろいろ調べながら書いているのですが、録音の設定部分でどうしてもエラーになる箇所があります。
発生している問題・エラーメッセージ
Thread 1: EXC_BAD_ACCESS (code=1, address=0x0)
該当のソースコード
以下の部分(設定部分のみ抜粋)
Swift
1 2import UIKit 3import AVFoundation 4import NCMB 5 6class RecordViewController: UIViewController, AVAudioRecorderDelegate { 7 var recorder = AVAudioRecorder() 8 let user = NCMBUser.current() //ログイン中のユーザーIDの取得 9 var chapter = 1 //チャプター番号を取得 10 11 override func viewDidLoad() { 12 super.viewDidLoad() 13 // Do any additional setup after loading the view. 14 } 15 16 override func didReceiveMemoryWarning() { 17 super.didReceiveMemoryWarning() 18 // Dispose of any resources that can be recreated. 19 } 20 21//*********中略************ 22 23 func recordSetting() { 24 let session = AVAudioSession.sharedInstance() 25 do { 26 try session.setCategory(AVAudioSessionCategoryPlayAndRecord) 27 } catch { 28 print("カテゴリ設定失敗") 29 print(error.localizedDescription) 30 } 31 do { 32 try session.setActive(true) 33 } catch { 34 print("session有効化失敗") 35 print(error.localizedDescription) 36 } 37 let soundFileName = "(getToday())(user?.userName! ?? "")-(chapter!).m4a" 38 let tempFilePath = NSTemporaryDirectory() 39 let fileURL = URL(fileURLWithPath: "(tempFilePath)(soundFileName)") 40 print("(fileURL)に書き込み") 41 let recordSetting: [String: Any] = [ 42 AVFormatIDKey: Int(kAudioFormatMPEG4AAC), 43 AVEncoderAudioQualityKey: AVAudioQuality.medium.rawValue, 44 AVEncoderBitRateKey: 128, 45 AVNumberOfChannelsKey: 2, 46 AVSampleRateKey: 44100.0 47 ] 48 do { 49 recorder = try AVAudioRecorder.init(url: fileURL, settings: recordSetting) //この行でエラー発生 50 recorder.delegate = self 51 recorder.isMeteringEnabled = true 52 recorder.prepareToRecord() 53 print("初期設定に成功しました") 54 } catch { 55 //alertを出す 56 print("初期設定に失敗しました: (error.localizedDescription)") 57 } 58 } 59//***********中略************ 60 func getToday() { 61 //現在の日時取得 62 } 63}
デバックのとき「0 -[AVAudioRecorder privCommonCleanup]」を見ると
1 AVFAudio`-[AVAudioRecorder privCommonCleanup]: ~ //略 8 -> 0x118f15a08 <+18>: movq $0x0, (%rbx) //ここにエラーが書いてある
試したこと
ディレクトリの指定自体はできている(ターミナルで移動できる・tmpディレクトリではなくLibrary/Cachesディレクトリに変えても同じエラー)のと、きちんとURL型に変更しているのでそこではないようなのですが。
上に示したように0 -[AVAudioRecorder privCommonCleanup]
で該当エラーが出ているのですが、何を意味しているのかわからず、かつ調べているとメモリが関係しているようなのですが、そのあたりをよく知らない・調べても出てこないもので手詰まりになっている状況です。
補足情報(FW/ツールのバージョンなど)
Swift4
XCode8.0Format(XCode9.x)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。