7

音声を .wav 形式で録音する iPhone アプリを開発しています。

コードは次のとおりです。

NSMutableDictionary* recordSetting = [[NSMutableDictionary alloc]init];         
[recordSetting setValue :[NSNumber  numberWithInt:kAudioFormatLinearPCM] forKey:AVFormatIDKey];
[recordSetting setValue:[NSNumber numberWithFloat:11025.0] forKey:AVSampleRateKey];         
[recordSetting setValue:[NSNumber numberWithInt: 1] forKey:AVNumberOfChannelsKey];
[recordSetting setValue:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];




NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
 NSUserDomainMask, YES);

  NSString *documentsDirectory = [path objectAtIndex:0]; 

  NSString *myDBnew = [documentsDirectory stringByAppendingPathComponent:@"test.wav"];

 recordedTmpFile = [NSURL fileURLWithPath:myDBnew];

NSLog(@"Using File called: %@",recordedTmpFile);

        recorder = [[ AVAudioRecorder alloc] initWithURL:recordedTmpFile settings:recordSetting error:&error];
        [recorder setDelegate:self];
        [recorder prepareToRecord];
        [recorder record];

上記のコードは、オーディオを .wav 形式で録音しています。kAudioFormatMPEGLayer3(mp3)の代わりにキーを使用して MP3 でオーディオを録音したい場合kAudioFormatLinearPCM(.wav)、他にどのような変更を加える必要がありますか? サンプルレート、チャンネルなど、recordSetting ディクショナリの変更。

または、iPhone と Android の両方と互換性があり、サイズが小さく、iPhone アプリから直接録音できるオーディオ形式を提案してください。

4

2 に答える 2

25

MP3 で録音することはできません。エンコーディングに関しては独自の形式です。これらは私が使用する設定です。2 分間の記録時間で約 150 KB になります。

NSString *tempDir = NSTemporaryDirectory();
NSString *soundFilePath = [tempDir stringByAppendingPathComponent:@"sound.m4a"];

NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];
NSDictionary *recordSettings = [NSDictionary dictionaryWithObjectsAndKeys:
                                  [NSNumber numberWithInt:kAudioFormatMPEG4AAC], AVFormatIDKey,
                                  [NSNumber numberWithInt:AVAudioQualityMin], AVEncoderAudioQualityKey,
                                  [NSNumber numberWithInt:16], AVEncoderBitRateKey,
                                  [NSNumber numberWithInt: 1], AVNumberOfChannelsKey,
                                  [NSNumber numberWithFloat:8000.0], AVSampleRateKey,
                                  [NSNumber numberWithInt:8], AVLinearPCMBitDepthKey,
                                  nil];

また、変換を行うことはプロセッサに負荷のかかる操作です。このオーディオをサーバーに送信する場合は、mp3lame ライブラリで FFMPEG を使用して、サーバー上でオーディオ変換を行うことができます。

編集:これは Android 記録用のコードです。AAC は Honeycomb の時点でのみサポートされているため、AMR エンコーディングに設定されています。

mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mediaRecorder.setAudioChannels(1);
mediaRecorder.setOutputFile("sample.m4a");
于 2012-05-11T14:30:55.610 に答える
4

.mp3 ファイルにオーディオを録音することはできません。kAudioFormatMPEGLayer3は専用ですplayback the .mp3 format audio。ありますno codec available for .mp3 recording。記録aacまたはwavフォーマットし、フォーマットに変換する必要があり.mp3ます。

以下のリンクと画像を確認してください。

オーディオ録音リファレンス

ここに画像の説明を入力

これは、オーディオ形式を変換するための基本を学ぶためのリンクです。

オーディオ コンバーター リファレンス

于 2012-05-11T14:25:46.553 に答える