Xcodeで下記のように記述してビルドし、ボタンを押して録音を開始すると
[ViewController.h]
#import <UIKit/UIKit.h> #import <AVFoundation/AVFoundation.h> #import <AudioToolbox/AudioToolbox.h> @interface ViewController : UIViewController<UIGestureRecognizerDelegate,AVAudioRecorderDelegate,AVAudioPlayerDelegate> { //音声録音 AVAudioRecorder *recorder1; AVAudioSession *session; AVAudioPlayer *player; } - (IBAction)rec_btn:(id)sender; - (IBAction)play_btn:(id)sender; @end
[ViewController.m]
- (IBAction)rec_btn:(id)sender { // recorder1録音 NSError *error = nil; session = [AVAudioSession sharedInstance]; if ( session.inputAvailable ) // for iOS6 [session inputIsAvailable] iOS5 { [session setCategory:AVAudioSessionCategoryPlayAndRecord error:&error]; } if ( error != nil ) { NSLog(@"Error when preparing audio session :%@", [error localizedDescription]); return; } [session setActive:YES error:&error]; if ( error != nil ) { NSLog(@"Error when enabling audio session :%@", [error localizedDescription]); return; } // File Path NSString *dir = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; NSString *filePath = [dir stringByAppendingPathComponent:@"voice_rec1.caf"]; NSURL *url = [NSURL fileURLWithPath:filePath]; // recorder = [[AVAudioRecorder alloc] initWithURL:url settings:nil error:&error]; recorder1 = [[AVAudioRecorder alloc] initWithURL:url settings:[self setAudioRecorder] error:&error]; //recorder.meteringEnabled = YES; if ( error != nil ) { NSLog(@"Error when preparing audio recorder :%@", [error localizedDescription]); return; } recorder1.delegate=self; // 7秒録音して終了する場合 [recorder1 recordForDuration: 7.0]; [recorder1 record]; //再生準備 [player prepareToPlay]; } //play_btn - (IBAction)play_btn:(id)sender { [player play]; }
ログに以下のような表示が出て録音がうまくいきません。
[Common] _BSMachError: port 6f03; (os/kern) invalid name (0xf) "Unable to deallocate send right"
解決方法をアドバイス頂けると幸いです。
googleで検索してもあまり出てこないので…。
「使用環境」
Xcode Version 8.2.1 (8C1002)
MacOSX Sierra 10.12.3
あなたの回答
tips
プレビュー