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