En AVFoundation, cómo sincronizar la grabación y la reproducción

Estoy interesado en grabar medios usando una AVCaptureSession en iOS mientras reproduzco medios usando un AVPlayer (específicamente, estoy reproduciendo audio y grabando video, pero no estoy seguro de que importe).

El problema es que, cuando vuelvo a reproducir los medios resultantes juntos, están fuera de synchronization. ¿Es posible sincronizarlos, asegurándose de que la reproducción y la grabación se inicien simultáneamente o descubriendo cuál es el desplazamiento entre ellos? Probablemente necesite que la synchronization sea del order de 10 ms. No es razonable asumir que siempre puedo capturar audio (ya que el usuario puede usar auriculares), por lo que la synchronization mediante el análisis del audio original y grabado no es una opción.

Esta pregunta sugiere que es posible finalizar la reproducción y la grabación simultáneamente y determinar el desplazamiento inicial de las longitudes resultantes de esa manera, pero no estoy claro cómo lograr que terminen simultáneamente. Tengo dos casos: 1) la reproducción de audio se agota, y 2), el usuario golpea el button "detener la grabación".

Esta pregunta sugiere priming y luego aplicar un retraso fijo, pero posiblemente dependiente del dispositivo, que obviamente es un truco, pero si es lo suficientemente bueno para el audio, obviamente vale la pena considerar el video.

¿Hay otra capa de medios que pueda usar para realizar la synchronization requerida?

Relacionado: esta pregunta no tiene respuesta.

Si está utilizando específicamente AVPlayer para reproducir Audio y le sugiero que use AudioQueueServices para el mismo. Su perfecta y rápida lectura de buffer por buffer y pausa de reproducción es más rápida que AVPLlayer

También puede existir la posibilidad de que le falte la statement inicial de [avPlayer prepareToPlay] que podría estar causando mucha sobrecarga para que se sincronice antes de reproducir el Audio. Espero que te ayude.