上下文 我在我的应用程序中使用AudioKit和GPUImage2。 我有一个第一个屏幕(录制)来预览和录制相机。 我有第二个屏幕(播放)来播放录制的电影和处理音频(使用AudioKit)
在录制屏幕上,GPUImage2使用简单的AVAssetWriter来捕获视频和音频。用这个简单的代码记录音频:
guard (assetWriterAudioInput.isReadyForMoreMediaDatav) else {
return
}
if (!assetWriterAudioInput.append(sampleBuffer)) {
print("Trouble appending audio sample buffer")
} else {
}
此代码被调用,而assetWriterAudioInput不是nil。
在Play屏幕上,我启动了两个播放器,一个用于视频的静音AVPlayer和一个用于音频(待处理)的AKAudioPlayer,其中包含与源相同的文件。
如果删除两个注释不会影响我的问题。
在录制过程中,我使用AKAudioPlayer在用户语音之上播放音乐。 注意:在播放过程中,我将音乐放在带有录音的混音器上(所以2 AKAudioPlayer进入1输出AKMixer)
我的问题是:
当我第一次录制时,我只在Play屏幕上看到视频,没有录制音频。当我听到我添加的音乐时,调音台工作正常。
当我再次开始(回到录制屏幕的动作)时,我正常录制并在播放屏幕上,一切正常 - >视频播放,语音+音乐播放。
有人可以帮我解决这个问题吗?
如果它可以提供帮助,我使用的AudioSessionCategory是 PlaybackCategory ,它在应用程序生命周期中永远不会改变,因此在第一个和下一个记录中也是如此。它只会在应用程序启动时从Ambient更改为Playback,因为我让扬声器在物理静音按钮处于活动状态时播放。