AVAssetWriter запись видео в реальном времени со звуком 48 кГц

Я использую для записи живого видео на iOS с использованием AVAssetWriter, как показано в RosyWriter. У меня проблема в том, что если я установил AVAudioSession favourite_SampleRate на 48000 Гц, это создаст много проблем, таких как несинхронизация звука с видео. Есть ли способ использовать частоту дискретизации по умолчанию (44100 Гц) на AVAudioSession, но при записи с AVAssetWriter использовать 48000 Гц, не вызывая проблем с синхронизацией?

РЕДАКТИРОВАТЬ: Я обнаружил, что проблема заключается в том, что количество кадров, возвращаемых при обратном вызове рендеринга модуля RIO, умноженное на 1/48000, НЕ равно ioduration AVAudioSession. Иначе дело обстоит с 44100 кГц. Я полагаюсь на этот код для синхронизации. Это является причиной несинхронизации аудио с видео.

    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 ответов

Другие вопросы по тегам