Feel Physics Backyard

HoloLensの出張授業をする会社で、教材を開発しています

AVFoundationでシンプルに録音、仕様変更の罠あり(iOS9)

f:id:weed_7777:20160930134650j:plain

マイクから録音して音声ファイルをつくります。iOS9から録音の詳細設定方法がわずかに変化しているので、これを踏まえないとエラーになります。やれやれ…

以下のコードをviewDidLoadの中に入れます。

        // 初期化ここから
        // 録音ファイルを指定する
        let filePath = NSHomeDirectory() + "/Documents/test.m4a"
        let url = NSURL(fileURLWithPath: filePath)
                
        // 再生と録音の機能をアクティブにする
        let session = AVAudioSession.sharedInstance()
        try! session.setCategory(AVAudioSessionCategoryPlayAndRecord)
        try! session.setActive(true)
        
        // 録音の詳細設定
        let recordSetting : [String : AnyObject] = [
            AVFormatIDKey : UInt(kAudioFormatAppleLossless),  // iOS9から必要
            AVEncoderAudioQualityKey : AVAudioQuality.Min.rawValue,
            AVEncoderBitRateKey : 16,
            AVNumberOfChannelsKey: 2,
            AVSampleRateKey: 44100.0
        ]
        
        // 仕上げ
        do {
            self.audioRecorder = try AVAudioRecorder(URL: url, settings: recordSetting)
        } catch {
            fatalError("初期設定にエラー")
        }
        // 初期化ここまで

あとは、self.audioRecorder.record()で録音し、stop()で停止します。

せめて

AVFormatIDKey : UInt(kAudioFormatAppleLossless) がないよ!

と警告を出して欲しいものです。