Split CMSampleBufferRef que contiene audio

Estoy dividiendo la grabación en diferentes archivos mientras grabo ...

El problema es que los búferes de muestra de audio y video captureOutput no corresponden a 1: 1 (lo cual es lógico)

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection

AUDIO START: 36796.833236847        | DURATION: 0.02321995464852608         | END: 36796.856456802
VIDEO START: 36796.842089239        | DURATION: nan         | END: nan
AUDIO START: 36796.856456805        | DURATION: 0.02321995464852608         | END: 36796.87967676
AUDIO START: 36796.879676764        | DURATION: 0.02321995464852608         | END: 36796.902896719
VIDEO START: 36796.875447239        | DURATION: nan         | END: nan
...

así que necesito dividir el audioCMSampleBufferRef según el tiempo y use el primer segmento para el primer video y la segunda parte del búfer para el segundo video

Es posible hacer cosas también conAVMutableComposition yAVAssetExportSession mientras se exporta, pero la pregunta es sobre el nivel de búfer encaptureOutput:, por lo que el archivo de la grabadora no necesita más procesamiento

Actualizar:

Parece 3 opciones, aún no implementadas con éxito

1)CMSampleBufferCopySampleBufferForRange

pareceCMSampleBufferCopySampleBufferForRange es el camino a seguir, pero estoy luchando para calcular el último argumentosampleRange...

2)CMSampleBufferCreateCopyWithNewTiming

bastante perdido usando este

3) parece que hay una manera de recortar el búfer proporcionandokCMSampleBufferAttachmentKey_TrimDurationAtStart, kCMSampleBufferAttachmentKey_TrimDurationAtEnd utilizando laCMSetAttachment

Respuestas a la pregunta(0)

Su respuesta a la pregunta