【发布时间】:2020-03-23 06:23:28
【问题描述】:
我有一个应用程序可以在用户同时播放视频时记录他们的音频会话,问题是视频的播放来自扬声器。
理想情况下,我想取消来自扬声器的音频,只通过麦克风录制用户的声音。
示例应用:FaceTime Facetime 会在您进行 FaceTime 通话时取消您正在播放的音乐,并且只记录用户的声音 (https://www.quora.com/How-does-an-iPhone-cancel-out-the-music-you-are-playing-when-you-FaceTime-someone)
下面是我添加音频会话以记录用户的代码:
let audioInputDevice = AVCaptureDevice.default(
.builtInMicrophone,
for: .audio,
position: .unspecified
)
.default(for: AVMediaType.audio)!
let session = self.previewLiveCamera.cameraLayer!.session!
//TODO: fix Audio Input, do not mix with other video audio
do {
audioInput = try AVCaptureDeviceInput(device: audioInputDevice!)
session.addInput(audioInput!)
} catch {
print("failed to add audio input")
}
for output in session.outputs {
let connectionOutput = output as! AVCaptureMovieFileOutput
self.connectionOutput = connectionOutput
print("Started reacording to \(fileURL!)")
self.connectionOutput.startRecording(to: fileURL!, recordingDelegate: self)
}
此外,我为用户同时观看的视频设置了视频播放器:
let postPlayer = AVPlayer(url: postVideoUrl!)
cell.playerLayer.player = postPlayer
【问题讨论】:
标签: swift avplayer avaudiosession