AVAssetWriter采用48 KHz音频进行实时视频录制

时间:2016-11-30 04:12:01

标签: avfoundation avaudiosession avassetwriter avassetwriterinput

我正在使用AVAssetWriter在iOS上录制实时视频,如RosyWriter所示。我遇到的问题是如果我将AVAudioSession preferredSampleRate设置为48000 Hz,它会带来许多麻烦,例如音频与视频不同步。有没有办法在AVAudioSession上使用默认采样率(44100 Hz),但使用AVAssetWriter录制时使用48000 Hz而不会导致任何同步问题?

编辑:我发现问题是在RIO单元的渲染回调中返回的帧数乘以1/48000不等于AVAudioSession的迭代。 44100 KHz不是这种情况。我依靠此代码进行计时。这是视频音频不同步的原因。

    CMSampleTimingInfo timing = { CMTimeMake(1, sampleRate), presentationTime, kCMTimeInvalid };

        OSStatus error = CMSampleBufferCreate(kCFAllocatorDefault, NULL, false, NULL, NULL, controller->mFormatDesc, inNumberOfFrames, 1, &timing, 0, NULL, &buff);


        CMSampleBufferSetDataBufferFromAudioBufferList(buff, kCFAllocatorDefault, kCFAllocatorDefault, 0, audioBufferList);

0 个答案:

没有答案