Tan*_*usk 26 ios avaudiosession swift
录像应用程序.我希望它能够在不停止/暂停背景音乐的情况下工作(例如,当用户收听Apple Music时).这我可以设置类别做很好mixWithOthers的AVAudioSession单.
设置类别后,我还需要添加AVCaptureDeviceInput到AVCaptureSession(所以声音会被记录下来).这会导致背景音频的故障/打嗝以及视频重置/重新聚焦.
我已经调查过,似乎背景音频故障是无法避免的,但视频在添加输入时不应重置.视频重置的结果是录制视频的第一帧是暗/黑色,或者从失焦帧开始然后聚焦.
还检查Snapchat ios应用程序,他们在开始录制时也有音频故障,但视频开始顺利录制.我究竟做错了什么.
我的代码:
//Setting audio session to mixWithOthers upon startup
let session = AVAudioSession.sharedInstance()
do {
try session.setCategory(AVAudioSessionCategoryPlayAndRecord,
with: [.mixWithOthers])
if session.mode != AVAudioSessionModeVideoRecording {
try session.setMode(AVAudioSessionModeVideoRecording)
}
} catch let error {
print("avsession category error: \(error)")
}
Run Code Online (Sandbox Code Playgroud)
然后:
//Just before recording starts will add audio input
let audioDevice = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeAudio)
do
{
let deviceInput = try AVCaptureDeviceInput(device: audioDevice) as AVCaptureDeviceInput
if captureSession.canAddInput(deviceInput) {
captureSession.addInput(deviceInput)
}
else {
print("Could not add audio device input to the session")
}
}
catch let error as NSError {
print(error.localizedDescription)
return
}
Run Code Online (Sandbox Code Playgroud)
是否有可能在没有任何故障的情况下这样做?如果没有那么我怎么能让它至少像Snapchat(在addInput调用时没有视频重置)?
BHe*_*cks -1
所以从你的问题来看,这句话具体是:
\n\n\n视频重置的结果是录制视频的第一帧是暗/黑的,或者是从失焦帧开始然后对焦的。
\n
audioInput向我表明您正在开始视频录制后添加。是否可以audioInput在视频开始录制之前添加设备?我想当添加另一个输入源时,视频“冻结”是预期的行为,因为AVCaptureSession本质上或多或少只是接受输入并输出文件。我想添加audioInput在录制之前添加设备可以解决最终产品中的该问题,因为该操作不会最终出现在录制中!:)
提到的另一条评论是:
\n\n\n您是否在更改输入之前在会话上调用 beginConfiguration / commitConfiguration ?
\n\xe2\x80\x93 SeanLintern88 4 月 10 日 15:30
\n
我认为问题作者没有解决这个问题,也可能是问题的原因。如这个问题/答案所示,您需要audioInput在begin/commit configuration。
一般来说,我找到了核心的苹果文档非常有帮助,并且可能会提供有关您可能想做的更多事情的更多信息。
\n| 归档时间: |
|
| 查看次数: |
631 次 |
| 最近记录: |