我正在使用 AVFoundation 的 AVCaptureSession 捕获音频和视频,使用 AVCaptureVideoDataOutputSampleBufferDelegate 和 AVCaptureAudioDataOutputSampleBufferDelegate 来收集 CMSampleBuffers 并使用 AVAssetWriter 将它们写入文件。
我面临的问题是,如果用户进入后台并返回,则在录制时,CMSampleBuffer 的 AudioFormat 将从:
这个
FormatList Array: {
Index: 0
ChannelLayoutTag: 0x640001
ASBD: {
mSampleRate: 48000.000000
mFormatID: 'lpcm'
mFormatFlags: 0xc
mBytesPerPacket: 2
mFramesPerPacket: 1
mBytesPerFrame: 2
mChannelsPerFrame: 1
mBitsPerChannel: 16 }}
对此:
FormatList Array: {
Index: 0
ChannelLayoutTag: 0x640001
ASBD: {
mSampleRate: 48000.000000
mFormatID: 'lpcm'
mFormatFlags: 0xc
mBytesPerPacket: 8
mFramesPerPacket: 1
mBytesPerFrame: 8
mChannelsPerFrame: 4
mBitsPerChannel: 16 }}
这显然会导致 AVAssetWriter 中的 AudioInput 出现问题并导致写入失败
有谁知道发生了什么?
至于 CaptureSession 设置:
输入:前置/后置摄像头和内置麦克风
输出:AVCaptureVideoDataOutput & AVCaptureAudioDataOutput
开始会话时,我正在更改 videoInput 设备中的活动格式
谢谢,约阿夫