路由audioinput从iPhone上的TOP麦克风接收
我正在写一个小应用程序来logging多个轨道,并将其重新播放。 我正在使用PlaybackAndRecord模式,并将我的输出路由到主扬声器。 问题是底部的麦克风还在使用input,所以现在当我录音的时候,新轨道上的其他音轨输出真的很响。 这是我到目前为止:
audioSession = [AVAudioSession sharedInstance]; [audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil]; OSStatus propertySetError = 0; UInt32 allowMixing = true; propertySetError = AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof(allowMixing), &allowMixing); UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride); [audioSession setActive:YES error:nil];
使用AVAudioSession获得可用的input。 在我的iPhone 5上看起来像这样。
NSLog(@"%@", [AVAudioSession sharedInstance].availableInputs); "<AVAudioSessionPortDescription: 0x14554400, type = MicrophoneBuiltIn; name = iPhone Microphone; UID = Built-In Microphone; selectedDataSource = Back>"
然后使用这些input之一来获取availableDataSources,就像这样。
NSLog(@"%@", [AVAudioSession sharedInstance].availableInputs[0].dataSources); "<AVAudioSessionDataSourceDescription: 0x145afb00, ID = 1835216945; name = Bottom>", "<AVAudioSessionDataSourceDescription: 0x145b1870, ID = 1835216946; name = Front>", "<AVAudioSessionDataSourceDescription: 0x145b3650, ID = 1835216947; name = Back>"
我们可以看到这款iPhone上实际上有三个麦克风:正面,背面和背面。 现在您可以设置您的首选数据源。
AVAudioSessionPortDescription *port = [AVAudioSession sharedInstance].availableInputs[0]; for (AVAudioSessionDataSourceDescription *source in port.dataSources) { if ([source.dataSourceName isEqualToString:@"Back"]) { [port setPreferredDataSource:source error:nil]; } }
- 将Swift UnsafePointer <AudioStreamBasicDescription>转换为字典?
- Objective-C如何添加覆盖到video使用AVFoundation?
- 如何根据框架在video中设置CATextLayer?
- 如何在iOS应用程序中播放m3uaudiostream
- 获取audio驱动程序采样率的OSX AVAudioSession替代
- AVMutableVideoComposition请求sourceImage有时是空的
- CALayer.contents在AVMutableComposition中不能正确渲染
- 与AVPlayer的平移手势
- 核心数据错误 – NSDate localizedCaseInsensitiveCompare:无法识别的select器发送到实例