iOSでAVAudioRecorderを使って、音声を録音する方法を紹介します。
AVAudioRecorder Class Reference
今回は
<図>
に示すサンプルを作成しました。
“Record”ボタンを押すと録音開始(それとともにボタンの表記が”Stop”に変わる)
“Stop”ボタンを押すと録音停止
“Play Recording”ボタンを押すと録音した音声の再生開始(それとともにボタンの表記が”Stop Playing”に変わる)
“Stop Playing”ボタンを押すと再生停止
となります。
録音機能の実装
必要なフレームワークをインポート
import AVFoundation
AVAudioRecorderとAVAudioPlayerを使用するのに必要なAVFoudationフレームワークをインポートします
レコーダーとプレイヤー
レコーダーとプレイヤーを保持するために、プロパティとして設定します
レコーダとしてAVAudioRecorder?型のプロパティを設定
var audioRecorder: AVAudioRecorder?
オーディオセッションの設定
/// 録音可能カテゴリに設定する
let session = AVAudioSession.sharedInstance()
do {
try session.setCategory(AVAudioSessionCategoryPlayAndRecord)
} catch {
// エラー処理
fatalError("カテゴリ設定失敗")
}
// sessionのアクティブ化
do {
try session.setActive(true)
} catch {
// audio session有効化失敗時の処理
// (ここではエラーとして停止している)
fatalError("session有効化失敗")
}
レコーダーの設定
• 録音したファイルの保存先URLを設定します
• 録音時の音質やチャンネル数を設定します
• 準備した保存先URLと録音設定を元にレコーダーを作成します
func setupAudioRecorder() {
// 録音用URLを設定
let dirURL = documentsDirectoryURL()
let fileName = "recording.caf"
let recordingsURL = dirURL.URLByAppendingPathComponent(fileName)
// 録音設定
let recordSettings: [String: AnyObject] =
[AVEncoderAudioQualityKey: AVAudioQuality.Min.rawValue,
AVEncoderBitRateKey: 16,
AVNumberOfChannelsKey: 2,
AVSampleRateKey: 44100.0]
do {
audioRecorder = try AVAudioRecorder(URL: recordingsURL, settings: recordSettings)
} catch {
audioRecorder = nil
}
}
/// DocumentsのURLを取得
func documentsDirectoryURL() -> NSURL {
let urls = NSFileManager.defaultManager().URLsForDirectory(NSSearchPathDirectory.DocumentDirectory, inDomains: NSSearchPathDomainMask.UserDomainMask)
if urls.isEmpty {
//
fatalError("URLs for directory are empty.")
}
return urls[0]
}
録音開始・停止
// 録音開始
recorder.record()
「[iOS][Swift]録音する」への2件のフィードバック