Ton*_*ber 6 core-audio avfoundation audiounit ios
iPhone 5有三个麦克风 - 顶部正面,顶部背面和底部.我想同时记录所有这些信号处理.我试了好几天都没成功.
使用AVAudioSession,我可以看到麦克风:
NSLog(@"%@", [AVAudioSession sharedInstance].availableInputs);
"<AVAudioSessionPortDescription: 0x14554400, type = MicrophoneBuiltIn; name = iPhone Microphone; UID = Built-In Microphone; selectedDataSource = Back>"
NSLog(@"%@", [AVAudioSession sharedInstance].availableInputs[0].inputDataSources);
"<AVAudioSessionDataSourceDescription: 0x145afb00, ID = 1835216945; name = Bottom>",
"<AVAudioSessionDataSourceDescription: 0x145b1870, ID = 1835216946; name = Front>",
"<AVAudioSessionDataSourceDescription: 0x145b3650, ID = 1835216947; name = Back>"
Run Code Online (Sandbox Code Playgroud)
我可以使用AVAudioSessionPortDescription -setPreferredDataSource:error:来记录三个中的一个.但我不能同时记录多个.如果我将输入通道的数量设置为2,我会从同一个麦克风获得两个相同的音轨.
AVAudioRecorder有一个属性channelAssignments,这似乎像它应该工作,但AVAudioSession inputNumberOfChannels和maximumInputNumberOfChannels都为1.该物业channelAssignments是专为具有多通道的辅助麦克风.
我尝试使用低级AudioUnit,但我得到了相同的结果.我在AudioUnit上找不到任何属性来更改输入源.
任何帮助,将不胜感激.
在我尝试做同样的事情之后,我的理解正是您所描述的 - 您不能更喜欢一台设备的多个数据源,因此您不能同时从多个内置麦克风进行录音。如果有人能证明我错了,我非常乐意听到!
旁注:我似乎无法运行你的代码。正如所写,我得到
Property availableInputs not found on object of type 'id'
Run Code Online (Sandbox Code Playgroud)
即使在将您所获得的内容整理成不需要任何显式转换的格式之后:
NSLog(@"%@", [[[AVAudioSession sharedInstance] availableInputs][0] inputDataSources]);
Run Code Online (Sandbox Code Playgroud)
我收到 SIGABRT:
-[AVAudioSessionPortDescription inputDataSources]: unrecognized selector sent to instance 0xd59dbe0'
Run Code Online (Sandbox Code Playgroud)
您使用什么 SDK 来实际编译您的代码,更不用说运行了?
| 归档时间: |
|
| 查看次数: |
1506 次 |
| 最近记录: |