Mac OS Xシンプルなボイスレコーダー

誰かがMac OS X用のシンプルなボイスレコーダーのサンプルコードを持っていますか?私は自分の声を自分のMacBook Proの内蔵マイクから録音してファイルに保存したいと考えています。それだけです。

私は何時間も探しています。音声を録音し、 http://developer.apple.com/library/mac/#samplecode/MYRecorder/Introduction/Intro.html を参照してください。 Mac OS Xのサンプルコードは、iPhoneの同様のサンプルコードよりも約10倍複雑です。

iOSの場合、コマンドは次のように簡単です。

soundFile =[NSURL FileURLWithPath:[tempDir stringByAppendingString:@"mysound.cap"]];
soundSetting = [NSDictionary dictionaryWithObjectsAndKeys://dictionary setting code left out goes here
soundRecorder = [[AVAudioRecorder alloc] initWithURL:soundFile settings:soundSetting error:nil];
[soundRecorder record];
[soundRecorder stop];  

iPhone版と同じくらいシンプルなMac OS Xのためにこれを行うコードがあると思う。ご協力ありがとうございました。

ここにコードがあります(現在プレイヤーは動作しません)

#import 
#import 

@interface MyAVFoundationClass : NSObject 
{
    AVAudioRecorder *soundRecorder;

}

@property (retain) AVAudioRecorder *soundRecorder;

-(IBAction)stopAudio:(id)sender;
-(IBAction)recordAudio:(id)sender;
-(IBAction)playAudio:(id)sender;

@end


#import "MyAVFoundationClass.h"

@implementation MyAVFoundationClass

@synthesize soundRecorder;

-(void)awakeFromNib
{
    NSLog(@"awakeFromNib visited");
    NSString *tempDir;
    NSURL *soundFile;
    NSDictionary *soundSetting;

    tempDir = @"/Users/broncotrojan/Documents/testvoices/";
    soundFile = [NSURL fileURLWithPath: [tempDir stringByAppendingString:@"test1.caf"]];    
    NSLog(@"soundFile: %@",soundFile);

    soundSetting = [NSDictionary dictionaryWithObjectsAndKeys:
                    [NSNumber numberWithFloat: 44100.0],AVSampleRateKey,
                    [NSNumber numberWithInt: kAudioFormatMPEG4AAC],AVFormatIDKey,
                    [NSNumber numberWithInt: 2],AVNumberOfChannelsKey,
                    [NSNumber numberWithInt: AVAudioQualityHigh],AVEncoderAudioQualityKey, nil];

    soundRecorder = [[AVAudioRecorder alloc] initWithURL: soundFile settings: soundSetting error: nil];
}

-(IBAction)stopAudio:(id)sender
{
    NSLog(@"stopAudioVisited");
    [soundRecorder stop];
}

-(IBAction)recordAudio:(id)sender
{
    NSLog(@"recordAudio Visited");
    [soundRecorder record];

}

-(IBAction)playAudio:(id)sender
{
    NSLog(@"playAudio Visited");
    NSURL *soundFile;
    NSString *tempDir;
    AVAudioPlayer *audioPlayer;

    tempDir = @"/Users/broncotrojan/Documents/testvoices/";
    soundFile = [NSURL fileURLWithPath: [tempDir stringByAppendingString:@"test1.caf"]];  
    NSLog(@"soundFile: %@", soundFile);

    audioPlayer =  [[AVAudioPlayer alloc] initWithContentsOfURL:soundFile error:nil];

    [audioPlayer setDelegate:self];
    [audioPlayer play];

}

@end
2
追加された 編集された
ビュー: 1
解決策は見つかりましたか?
追加された 著者 strange,

3 答え

AVFoundation フレームワークは、Lionの新機能であり、iOSのバージョンに非常に似ています。これには AVAudioRecorder が含まれます。ほとんどまたはまったく変更することなく、iOSのコードを使用することができます。

ドキュメントはここ

4
追加された
Lionの前に、QTKitフレームワークは同じことをしましたが、もう少しコードを追加しました。それにもかかわらず、QTKitの基本的なドキュメントには、いくつかの完全に説明されたブロック内にオーディオおよびビデオを記録する方法の非常に単純な(しかし完全な)例が含まれています。ドキュメントの検索をすばやく行うと、両方のパスが表示され、両方のサンプルコードが完成します。
追加された 著者 Joshua Nozzi,
どうやって動かないのか分かりますか? NSLog()ステートメントがヒットしていますか?
追加された 著者 Rob Keniger,
しかし、動作しません、ドキュメントは、Mac上に存在しない 'AVAudioSession'について話します。
追加された 著者 strange,
レコーダーを動作させることができましたが、プレーヤーにファイルを再生させるように見えません。ここに私のコードです:
追加された 著者 Alan Harmon,
@Rob Keniger - NSLogに当たっていますが、音声は再生されません。私はデリゲートにいる気がしますが、私はまだそれを理解していません。また、私はMP3を録音しようとしましたが、フォーマットは謎です。私はkAudioFormatMPEG4AACの代わりにkAudioFormatMPEGLayer3を使用しましたが、ファイルを書き込んだり、エラーを出したりしませんでした。うまくいきませんでした。私はappleからのドキュメンテーションを引用しましたが、設定が必要なものは明確ではありません。私はあなたの前進をほめてくれてありがとう。
追加された 著者 Alan Harmon,

あなたのコードがオーディオを再生しない理由は、audioPlayer変数がメソッドブロックの終わりに達するとすぐに解放されるからです。

次の変数をメソッドブロックの外側に移動すると、オーディオが再生されます。

 AVAudioPlayer *audioPlayer; 

ところで、あなたのコードスニペットは私のために非常に役立った! :D

0
追加された

Mac用のスニペットは次のとおりです。

    NSDictionary *soundSetting = [NSDictionary dictionaryWithObjectsAndKeys:
                             [NSNumber numberWithFloat: 44100.0],AVSampleRateKey,
                             [NSNumber numberWithInt: kAudioFormatMPEG4AAC],AVFormatIDKey,
                             [NSNumber numberWithInt: 2],AVNumberOfChannelsKey,
                             [NSNumber numberWithInt: AVAudioQualityHigh],AVEncoderAudioQualityKey, nil];

NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* documentsDirectory = [paths objectAtIndex:0];
NSURL* audioFileURL = [NSURL fileURLWithPath: [documentsDirectory stringByAppendingString:@"/test.wav"]];

NSError* error;
AVAudioRecorder* soundRecorder = soundRecorder = [[AVAudioRecorder alloc] initWithURL: audioFileURL settings: soundSetting error: &error];

if (error)
{
    NSLog(@"Error!  soundRecorder initialization failed...");
}

// start recording
[soundRecorder record];
0
追加された