意図したフレームレートで CVPixelBuffers を AVAssetWriterInputPixelBufferAdaptor に追加しようとしていますが、速すぎるようで、計算がうまくいきません。これはカメラからのキャプチャではなく、変化する画像のキャプチャです。実際のビデオは、キャプチャされた経過時間よりもはるかに高速です。
1/24 秒ごとに CVPixelBuffer を追加する関数があります。そこで、前回に 1/24 秒のオフセットを追加しようとしています。
私はもう試した:
let sampleTimeOffset = CMTimeMake(value: 100, timescale: 2400)
と:
let sampleTimeOffset = CMTimeMake(value: 24, timescale: 600)
と:
let sampleTimeOffset = CMTimeMakeWithSeconds(0.0416666666, preferredTimescale: 1000000000)
私は currentSampleTime に追加し、次のように追加しています。
self.currentSampleTime = CMTimeAdd(currentSampleTime, sampleTimeOffset)
let success = self.assetWriterPixelBufferInput?.append(cv, withPresentationTime: currentSampleTime)
私が考えたもう1つの解決策は、前回と現在の時間の差を取得し、それをcurrentSampleTimeに追加して正確にすることですが、その方法は不明です。