0

我正在使用 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 设备中的活动格式

谢谢,约阿夫

4

0 回答 0