AVAudioRecorder 인스턴스를 사용하여 사운드를 녹음하려고하는데 [녹음기 peakPowerForChannel : 0]을 호출하려고 할 때를 제외하고 전체 녹음 진행률이 정상적으로 실행됩니다. 반환 값은 항상 0입니다. 꽤 이상합니다.AVAudioRecorder의 iphone-peakPowerForChannel 함수가 작동하지 않습니다.
녹음 된 오디오 파일을 확인했지만 완전히 정상입니다. 그런 다음 AVAudioPlayer를 사용하여 재생하고 재생하는 동안 [player peakPowerForChannel : 0]을 호출하면 반환 값이 올바른 것처럼 보입니다.
올바른 값을 얻으려면 어떻게해야합니까? recoder.meteringEnabled = YES로 설정하고 [recorder peakPowerForChannel : 0]을 호출 할 때마다 [recorder updateMeters]를 호출했습니다. 다음과 같이 레코더의 초기는 : 당신이 중 하나를 당신이 중 하나 record
메시지 또는 prepareToRecord
메시지를 보낸 때까지 meteringEnabled
속성을 설정하기 위해 기다릴 필요가
NSMutableDictionary *recordSetting = [[NSMutableDictionary alloc] init];
//General Audio Format Settings
[recordSetting setValue:[NSNumber numberWithInt: 'ima4'] forKey:AVFormatIDKey];
[recordSetting setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey];
[recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey];
//Linear PCM Format Settings
[recordSetting setValue:[NSNumber numberWithInt: 32] forKey:AVLinearPCMBitDepthKey];
[recordSetting setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey];
[recordSetting setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey];
//Encoder Settings
[recordSetting setValue:[NSNumber numberWithInt:AVAudioQualityMedium] forKey:AVEncoderAudioQualityKey];
[recordSetting setValue:[NSNumber numberWithInt:96] forKey:AVEncoderBitRateKey];
[recordSetting setValue:[NSNumber numberWithInt:16] forKey:AVEncoderBitDepthHintKey];
//Sample Rate Conversion Settings
[recordSetting setValue:[NSNumber numberWithInt:AVAudioQualityHigh] forKey:AVSampleRateConverterAudioQualityKey];
recorder = [[AVAudioRecorder alloc] initWithURL:url settings:recordSetting error:nil];
recorder.meteringEnabled = YES;
Unity와 협력하고 계십니까? –