我在网上找到了这个示例代码:https://developer.apple.com/library/content/samplecode/AVCam/Introduction/Intro.html
我正在尝试将输入麦克风从默认麦克风更改为iPhone上的底部麦克风。有没有人在Swift中有过这方面的经验?我发现的唯一例子是Obj-C,当我实现它们时会导致错误。我正在使用Apple的AVCam示例应用程序作为参考,音频部分包含在下面。
// Add audio input.
do {
let audioDevice = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeAudio)
let audioDeviceInput = try AVCaptureDeviceInput(device: audioDevice)
if session.canAddInput(audioDeviceInput) {
session.addInput(audioDeviceInput)
}
else {
print("Could not add audio device input to the session")
}
}
catch {
print("Could not create audio device input: \(error)")
}
答案 0 :(得分:0)
您应该尝试使用以下方式设置会话类别:
session.setCategory(AVAudioSessionCategoryPlayAndRecord, withOptions: AVAudioSessionCategoryOptions.DefaultToSpeaker, error: nil)
这应该默认使用底部麦克风
答案 1 :(得分:0)
如果您只需要音频,则应使用AVAudioSession
- https://developer.apple.com/reference/avfoundation/avaudiosession
未经过测试您可以使用的示例代码:
import AVFoundation
.
.
private var session: AVAudioSession!
private var input: AVAudioSessionPortDescription!
.
.
.
session = AVAudioSession.sharedInstance()
do {
try session.setCategory(AVAudioSessionCategoryRecord)
// Fetch Built in Mic
if let availableInputs = session.availableInputs {
for inputSource in availableInputs {
if inputSource.portType == AVAudioSessionPortBuiltInMic {
input = inputSource
break
}
}
// Set preferred data source by location
if let dataSources = input.dataSources {
for dataSource in dataSources {
if dataSource.location == AVAudioSessionLocationLower {
input.setPreferredDataSource(dataSource)
break
}
}
}
session.setPreferredInput(input)
.
.
} catch {
....
}