我正在尝试使用AVAssetWriter在iOS设备上通过摄像头和麦克风保存捕获的视频和音频。我完成了一个基本功能的开发,比如用户可以记录两个图像(视频)和音频,现在我尝试使静音功能可用。我猜当isMuted
为真时,我需要追加空(或者沉默?)CMSampleBuffer
到assetWriterAudioInput
,但是这是正确的方法吗?如果不是,你能给我指出正确的方向吗?另外,在createSilenceBuffer
函数中,我如何创建空/沉默的CMSampleBuffer?
var isMuted: Bool = false
var assetWriterAudioInput: AVAssetWriterInput?
func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
if output == videoOutput {
guard assetWriterVideoInput?.isReadyForMoreMediaData == true else { return }
assetWriterVideoInput?.append(sampleBuffer)
} else if output == audioOutput {
if issued {
let silenceBuffer = createSilenceBuffer(from sampleBuffer)
assetWriterAudioInput?.append(silenceBuffer)
} else {
assetWriterAudioInput?.append(sampleBuffer)
}
}
}
func createSilenceBuffer(from sampleBuffer: CMSampleBuffer) -> CMSampleBuffer {
// return new CMSampleBuffer without audio??
}
1条答案
按热度按时间m4pnthwp1#
您可以使用此函数将传入的音频静音
CMSampleBuffers