0

RosyWriter で示されているように、AVAssetWriter を使用して iOS でライブ ビデオを録画するために使用しています。私が抱えている問題は、AVAudioSession preferredSampleRate を 48000 Hz に設定すると、オーディオがビデオと同期しないなどの多くの問題が発生することです。AVAudioSession でデフォルトのサンプルレート (44100 Hz) を使用する方法はありますが、AVAssetWriter で録音する場合、同期の問題を引き起こすことなく 48000 Hz を使用しますか?

編集: RIO ユニットのレンダー コールバックで返されるフレーム数に 1/48000 を掛けた値が、AVAudioSession の ioduration と等しくないことが問題であることがわかりました。これは、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);
4

0 に答える 0