Calculadora de crossfade
Un crossfade acorta una secuencia de dos clips porque ambos se reproducen simultáneamente durante la transición.
Ejecutar — gratis
Esta calculadora recibe la duración del primer clip, la del segundo y la longitud de crossfade deseada. Devuelve la duración conjunta final y los puntos exactos de inicio y fin de la superposición en la línea de tiempo resultante. El resultado permite planificar ediciones, comprobar duraciones de entrega, colocar marcadores o generar datos temporales deterministas para un flujo de audio automatizado.
Comprenda qué modifica un crossfade
Al colocar dos clips uno detrás de otro, la secuencia dura simplemente la suma de ambos. Un crossfade cambia esa operación porque el final del clip A y el principio del clip B ocupan el mismo tramo temporal. Ese intervalo compartido debe contarse una sola vez. La calculadora resta el crossfade solicitado de la suma de las dos duraciones para obtener el total combinado. Se supone que el clip A comienza en la posición cero y que el clip B se adelanta hasta que su inicio se superpone con el cierre del clip A. Con esta convención, la superposición termina justo donde acaba el clip A. Un crossfade de cero segundos es válido y representa un corte directo: la ventana tiene anchura cero y la duración conjunta coincide con la suma. Todos los valores se expresan en segundos y admiten decimales para representar tiempos inferiores a un segundo sin configurar una frecuencia de fotogramas.
Interprete correctamente la ventana de superposición
La ventana se indica sobre la línea de tiempo conjunta, no como un desplazamiento interno de cada archivo fuente. Su inicio se obtiene restando la duración del crossfade a la duración del clip A, y su fin coincide con la duración completa del clip A. Si el primer clip dura doce segundos y el crossfade dura dos, por ejemplo, la superposición comienza en el segundo diez y termina en el doce. El clip B empieza, por tanto, en el punto de inicio indicado, y la parte restante continúa después de que finalice el clip A. Estas marcas resultan prácticas para editores, automatizaciones y registros de validación porque describen una única línea temporal compartida. El cálculo no examina muestras, no elige una curva ni modifica archivos. Solo resuelve tiempos. Las curvas de potencia constante, lineales, logarítmicas o personalizadas pueden usar la misma ventana; elegir la curva es una decisión de mezcla independiente.
Valide la edición antes de renderizar
Un crossfade no puede durar más que ninguno de los clips participantes. Los dos deben aportar material suficiente para cubrir toda la superposición, por lo que se rechaza una transición que exceda la duración del clip A o del clip B. También se rechazan duraciones ausentes, no numéricas, infinitas, negativas o nulas; el crossfade sí puede ser cero, pero nunca negativo. Esta validación evita que una instrucción temporal incorrecta llegue a un renderizador y falle tarde, después de completar otros trabajos. Use la duración conjunta para comprobar una lista, un episodio o un objetivo de exportación, y emplee los límites de la ventana para situar eventos de transición de forma coherente. Si encadena varios clips, aplique el cálculo en cada unión o reste una vez cada crossfade válido de la suma de todas las duraciones. Este cálculo solo modela dos clips; no incluye silencios, cambios de velocidad, recortes ni capas simultáneas adicionales.
Qué puede hacer con ella
Planificar una edición de audio
Calcule la duración final y coloque marcadores precisos antes de crear el crossfade en un editor.
Validar instrucciones de renderizado por lotes
Rechace transiciones imposibles antes de enviar el trabajo a una cadena de renderizado de audio.
Estimar el tiempo de una lista
Descuente el intervalo superpuesto al ordenar dos canciones, segmentos o clips ambientales.
Preguntas frecuentes
¿Cómo se calcula la duración conjunta?
La calculadora suma las duraciones de ambos clips y resta una vez el crossfade, porque ese intervalo es compartido.
¿Dónde comienza la superposición?
Comienza en la duración del primer clip menos la duración del crossfade y termina cuando finaliza ese primer clip.
¿Puede ser cero la duración del crossfade?
Sí. El cero representa un corte directo, crea una ventana sin anchura y no reduce la suma de las duraciones.
¿Qué ocurre si el crossfade supera la duración de un clip?
La solicitud devuelve un error de entrada no válida, pues cada clip debe cubrir toda la superposición.
¿Cuánto cuesta una solicitud de API?
Cada solicitud de API cuesta $0.002. Este mismo cálculo determinista también puede ejecutarse en el navegador.
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/audio/crossfade-duration \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"clip_a_duration":12.5,"clip_b_duration":8.25,"crossfade_duration":2.75}'const res = await fetch("https://api.kit.forhosting.com/audio/crossfade-duration", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"clip_a_duration": 12.5,
"clip_b_duration": 8.25,
"crossfade_duration": 2.75
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/audio/crossfade-duration",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"clip_a_duration": 12.5,
"clip_b_duration": 8.25,
"crossfade_duration": 2.75
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/audio/crossfade-duration", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"clip_a_duration":12.5,"clip_b_duration":8.25,"crossfade_duration":2.75}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"clip_a_duration":12.5,"clip_b_duration":8.25,"crossfade_duration":2.75}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/audio/crossfade-duration", 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
{
"clip_a_duration": 12.5,
"clip_b_duration": 8.25,
"crossfade_duration": 2.75
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "audio.crossfade_duration",
"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 | 200 |
max_minutes | 180 |
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. |