gpt4 book ai didi

iPhone 4,录音后的音频电平问题

转载 作者:行者123 更新时间:2023-11-29 13:05:50 26 4
gpt4 key购买 nike

我正在开发一个需要录制和播放音频的 iOs 应用程序。我注意到在 iPhone 4 上录制后音频电平要低得多。当我使用我在这里找到的代码时,这是固定的:iOS - iPhone sound level low after recording sound using AVFoundation

 if(!IS_IPHONE_5){
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);
}

这很好用,但这会导致问题,如果用户将手机静音,音频仍会播放(还有应用中的其他声音)

是否可以通过某种方式检测音频是否静音?如果是这样,我们就不会执行上面的代码。

最佳答案

也许你可以这样检查

CFStringRef state = nil;
UInt32 propertySize = sizeof(CFStringRef);
AudioSessionInitialize(NULL, NULL, NULL, NULL);
OSStatus status = AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &propertySize, &state);

if (status == kAudioSessionNoError)
{
return (CFStringGetLength(state) == 0); // YES = silent
}
return NO;

修改后的方法是

-(BOOL)silenced {
#if TARGET_IPHONE_SIMULATOR
// return NO in simulator. Code causes crashes for some reason.
return NO;
#endif

CFStringRef state;
UInt32 propertySize = sizeof(CFStringRef);
AudioSessionInitialize(NULL, NULL, NULL, NULL);
AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &propertySize, &state);
if(CFStringGetLength(state) > 0)
return NO;
else
return YES;
}

关于iPhone 4,录音后的音频电平问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18670792/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com