- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我正在尝试使用 AVAudioRecorder 的 averagePowerForChannel 方法来监控 iPad/iPhone 应用程序麦克风的输入电平。我有一个回调,它在一个循环中轮询平均水平——在 iPhone 上它工作正常并返回合理的水平,但出于某种原因在 iPad 上它总是返回 -120.0。
这是我的一些设置代码:
- (void) setupMic {
if (micInput) {
[micInput release];
micInput = nil;
}
NSURL *newURL = [[NSURL alloc] initFileURLWithPath:@"/dev/null"];
NSMutableDictionary *recordSettings = [[NSMutableDictionary alloc] init];
[recordSettings setObject:[NSNumber numberWithInt:kAudioFormatAppleLossless] forKey: AVFormatIDKey];
[recordSettings setObject:[NSNumber numberWithFloat:22050.0] forKey: AVSampleRateKey];
// [recordSettings setObject:[NSNumber numberWithInt:2] forKey:AVNumberOfChannelsKey];
[recordSettings setObject:[NSNumber numberWithInt:12800] forKey:AVEncoderBitRateKey];
[recordSettings setObject:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];
[recordSettings setObject:[NSNumber numberWithInt: AVAudioQualityLow] forKey: AVEncoderAudioQualityKey];
micInput = [[AVAudioRecorder alloc] initWithURL:newURL settings:recordSettings error:nil];
// [micInput setMeteringEnabled:YES];
[newURL release];
[recordSettings removeAllObjects];
[recordSettings release];
}
还有我的开始录音方法:
- (void) startRecording {
NSLog(@"startRecording!");
[micInput pause];
[micInput prepareToRecord];
micInput.meteringEnabled = YES;
[micInput record];
[micInput updateMeters];
levelTimer = [[NSTimer alloc] initWithFireDate:[NSDate dateWithTimeIntervalSinceNow:0.0] interval:0.03 target:self selector:@selector(levelTimerCallback:) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:levelTimer forMode:NSDefaultRunLoopMode];
}
还有一些 levelTimer 回调:
- (void)levelTimerCallback:(NSTimer *)timer {
[micInput updateMeters];
double avgPowerForChannel = pow(10, (0.05 * [micInput averagePowerForChannel:0]));
[micSprite receiveInput:avgPowerForChannel];
NSLog(@"Avg. Power: %f", [micInput averagePowerForChannel:0]);
...
}
在 iPhone 上,NSLog 语句将返回合理的值,而 iPad 将始终返回 -120.0。
注意:我在 cocos2d 应用程序中使用它。出于某种原因,如果我在 iPad 上重新启动当前场景,麦克风电平将返回正确的值。
有人有什么建议吗?我在这里很茫然。谢谢!
最佳答案
我遇到了同样的问题。我发现将类别设置为 AVAudioSessionCategoryPlayAndRecord 修复了它:
NSError *error;
[[AVAudioSession sharedInstance]
setCategory:AVAudioSessionCategoryPlayAndRecord error:&error];
if (error) {
NSLog(@"Error setting category: %@", [error description]);
}
关于ios - AVAudioRecorder averagePowerForChannel 总是返回 -120.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5022514/
以下是我的录制按钮方法的内容。它创建了所需的文件,但无论我记录多长时间,创建的文件的长度始终为 4kb 和 0 秒,我无法弄清楚为什么它无效。对于averagePowerPerChannel,计量也返
在我的设备上使用 Xcode 5.0 并运行 iOS 7.0.2。 我正在使用这种代码: AVAudioRecorder *audioRecorder; ……… [audioRecorder reco
我希望有人能支持我...... 我一直在开发一个应用程序,该应用程序允许最终用户录制一个小音频文件以供以后播放,并且正在测试内存泄漏。当 AVAudioRecorder 的“停止”方法尝试关闭其正在录
我在进入后台后暂停 AVAudioRecorder 时遇到问题。基本上,它是这样的(_recorder 是我的 AVAudioRecorder 实例): 开始录制: [_recorder record
AVAudioRecorder的peakPowerForChannel和averagePowerForChannel方法有什么区别? 为什么返回的值为负数?不是应该在没有声音时为 0,在声音幅度增大时
我有一个可以录制音频的应用程序。我想知道如何才能增加增益。有没有办法标准化音频或以某种方式放大它? 谢谢,豪伊 最佳答案 看来我找到了解决方案。根据文档,AVAudioPlayer 音量可以在 0.0
简单地说,我正在尝试根据 iPhone 麦克风输入流中的分贝读数对某些内容进行口型同步,但我得到的值并不完全是我想要的值。我正在使用 AVAudioRecorder 的peakPowerForChan
这是我的方法: -(void) playOrRecord:(UIButton *)sender { if (playBool == YES) { NSError *error
无法获取 AVAudioRecorder 与 URL 配合使用的代码。有人能够在 iOS 和 Swift 3 上录制音频吗?下面的粗体文本是我收到以下错误的地方: "Cannot invoke ini
我正在制作 iOS 游戏。我需要做的一件事是允许用户进行快速录音。这一切都有效,但录音只是暂时保存。因此,当用户关闭应用程序并重新打开它时,录音应该能够再次播放,但它没有,当我关闭应用程序时它被删除了
我需要开发一个在检测到语音时播放mp3的App女巫。我可以使用“在这里说”示例吗?还是有人知道类似的例子? 我当时在看FFT和aurioTouch的示例,但对我来说似乎很难... 提前致谢 最佳答案
我正在制作一个应用程序,可以记录用户的声音并以高音调播放给他们。 (像花栗鼠)。适用于 iOS 5.0 或更高版本以及 Xcode 4.6 这个问题之前已经在这里问过 Record the sound
我正在使用 AVAudioRecorder 录制具有以下配置的不同长度的音频文件: - (AVAudioRecorder*)recorder { if(!_recorder) {
我正在使用 AVAudioRecorder 进行录制,当我录制时,我按主页按钮并来到前台并检查 AVAudioRecorder (isRecording) 的状态仍然是 是。但是当我播放音频时,它只播
我最近发现我的应用程序存在漏洞。我把所有的代码都注释掉了,一步一步去掉注释。这一切都导致了 AVAudioRecorder。 ViewController.h: #import @interface
我正在使用 AVAudioRecorder 录制音频,它录制流畅,我可以播放或获取保存文件我正在使用以下代码初始化 AVAudioRecorder NSDictionary *settings =
我现在正在为 AVAudioRecorder(和 Player)苦苦挣扎。我有一个应用程序,其中有三个简单的按钮可以录制/播放/停止通话,我正在使用 AVAudioRecorder 和 AVAudio
我正在使用 AVAudioRecorder 录制并保存到具有以下设置的 audio.m4a 文件: NSMutableDictionary *recordSetting = [[NSMutableDi
如何在被来电打断后继续录音?现在来电后我的录音停止了,但我希望能够继续录音 func audioRecorderDidFinishRecording(_ recorder: AVAudioRecord
我正在努力实现我认为会非常容易但事实并非如此的事情。 我正在玩“react-native-audio”库的源代码。但是你可以假设我是为了这个问题而在本地工作。 这是一个reference for th
我是一名优秀的程序员,十分优秀!