Calcular el desfase de clips multicámara con picos de audio
La sincronización multicámara resulta sencilla cuando ambas grabaciones contienen el mismo sonido nítido, como una palmada, una claqueta o un golpe de batería.
Ejecutar — gratis
Introduzca el tiempo detectado de ese pico compartido en el primer clip y en el segundo. La calculadora resta el segundo tiempo del tiempo de referencia, devuelve el desfase exacto de colocación e indica claramente si debe retrasar o adelantar el segundo clip. Además, valida ambos valores y rechaza tiempos negativos.
Elija un pico de audio compartido e inequívoco
Empiece por localizar el mismo evento acústico en las dos grabaciones. Una claqueta, una palmada, el estallido de un globo u otro transitorio breve funciona bien porque su forma de onda presenta un pico pronunciado y reconocible. Amplíe la onda de cada clip y anote el tiempo del mismo punto del pico, con segundos y decimales si el editor ofrece precisión inferior al segundo. Considere la primera cámara como línea de tiempo de referencia: su marca es el punto con el que deberá coincidir la segunda grabación. Introduzca ambas marcas en sus campos correspondientes. No compare palmadas distintas ni golpes próximos, pues un cálculo exacto no corrige eventos de origen diferentes. Las marcas deben medirse desde el inicio de cada archivo fuente, no desde posiciones existentes después de recortes. Si ya recortó un clip de forma destructiva, mida respecto del nuevo origen o restaure el original. Ambos valores deben ser cero o positivos; una marca negativa se rechaza por ser inválida.
Interprete correctamente el signo del desfase
El cálculo resta el tiempo del pico del segundo clip al tiempo del pico de referencia. Esta convención indica dónde debe comenzar el segundo clip en la línea de tiempo del primero. Un resultado positivo significa que el sonido aparece antes dentro del segundo clip; por tanto, retráselo el número de segundos devuelto. Un resultado negativo significa que aparece después, por lo que debe adelantar el clip: su inicio quedaría antes del origen de referencia por el valor absoluto del resultado. Cero indica que ambas marcas ya comparten la misma posición relativa. El campo de ajuste expresa también la decisión como delay_second_clip, advance_second_clip o already_aligned, lo que evita invertir el signo en procesos automáticos. Solo se redondea más allá de doce decimales para eliminar residuos de coma flotante sin perder precisión práctica. Si su editor trabaja por fotogramas, convierta los segundos con la frecuencia real del proyecto y revise después la forma de onda. Conserve el valor en segundos cuando admita posición de audio subfotograma.
Aplique y compruebe la sincronización
Coloque el primer clip en la posición de referencia deseada y aplique el desfase al comienzo del segundo. Si es positivo, mueva el segundo clip más tarde exactamente esa duración. Si es negativo, muévalo antes por su magnitud; cuando la línea de tiempo no admita posiciones anteriores a cero, desplace ambos clips hacia delante sin alterar su separación relativa. Reproduzca el evento común y examine las dos ondas con gran ampliación. Los picos transitorios deben coincidir, y silenciar una pista no debería revelar una palmada doble ni un eco breve. Este cálculo resuelve una diferencia constante de inicio, habitual cuando las cámaras grabaron sin interrupciones desde un evento común. No mide deriva de reloj, velocidad variable, fotogramas perdidos, frecuencias de muestreo distintas ni cortes internos. En grabaciones largas, compruebe otro sonido compartido cerca del final. Si el primer pico coincide pero el posterior no, corrija la deriva mediante estiramiento temporal o un flujo específico. Guarde las marcas originales con las notas de edición para reproducir el ajuste en proxies o archivos de alta resolución.
Qué puede hacer con ella
Sincronizar la grabación de una entrevista
Alinee un segundo ángulo con la cámara principal mediante la palmada de claqueta captada por ambos micrófonos.
Crear una línea multicámara de concierto
Use un golpe de batería compartido para calcular el inicio de una cámara móvil frente a la grabación de referencia.
Automatizar la preparación de proxies
Guarde un desfase determinista en segundos para reutilizarlo al ordenar archivos fuente coincidentes.
Preguntas frecuentes
¿Qué significa el desfase?
Es el tiempo del pico del primer clip menos el del segundo. Un valor positivo retrasa el segundo clip y uno negativo lo adelanta.
¿Qué ocurre si una marca de tiempo es negativa?
La solicitud falla con un error de entrada no válida, pues el evento no puede ocurrir antes del inicio del archivo fuente.
¿Puedo introducir fracciones de segundo?
Sí. Los segundos decimales conservan la precisión subfotograma o de muestra de audio disponible en su proceso de detección.
¿Corrige también la deriva de sincronización?
No. Calcula un único desplazamiento constante. Use otro evento posterior para comprobar posibles diferencias de reloj o velocidad.
¿Cuánto cuesta un cálculo mediante API?
Cada solicitud API cuesta $0.002. El cálculo es determinista y no utiliza servicios de red.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/video/multi-cam-sync-offset \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"first_clip_spike_seconds":12.48,"second_clip_spike_seconds":9.73}'const res = await fetch("https://api.kit.forhosting.com/video/multi-cam-sync-offset", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"first_clip_spike_seconds": 12.48,
"second_clip_spike_seconds": 9.73
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/video/multi-cam-sync-offset",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"first_clip_spike_seconds": 12.48,
"second_clip_spike_seconds": 9.73
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/video/multi-cam-sync-offset", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"first_clip_spike_seconds":12.48,"second_clip_spike_seconds":9.73}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"first_clip_spike_seconds":12.48,"second_clip_spike_seconds":9.73}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/video/multi-cam-sync-offset", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"first_clip_spike_seconds": 12.48,
"second_clip_spike_seconds": 9.73
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "video.multi_cam_sync_offset",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_mb | 500 |
max_minutes | 60 |
max_megapixels | 3.9 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |