Calculadora de crossfade
Um crossfade encurta uma sequência de dois clipes porque ambos tocam ao mesmo tempo durante a transição.
Executar grátis
Esta calculadora recebe a duração do primeiro clipe, a duração do segundo e o crossfade desejado. Ela informa a duração combinada final e os pontos exatos de início e fim da sobreposição na linha do tempo resultante. O resultado ajuda você a planejar edições, conferir a duração de entregas, posicionar marcadores ou produzir dados de tempo determinísticos para fluxos automatizados de áudio.
Entenda o que um crossfade altera
Quando dois clipes são colocados em sequência sem transição, a duração total é simplesmente a soma dos dois. O crossfade muda essa conta porque o final do clipe A e o começo do clipe B ocupam o mesmo trecho da linha do tempo. Esse intervalo compartilhado deve ser contado apenas uma vez. A calculadora subtrai o crossfade solicitado da soma das durações para encontrar o total combinado. Ela considera que o clipe A começa na posição zero e que o clipe B é antecipado até sua abertura coincidir com o encerramento do clipe A. Nessa convenção, a sobreposição termina exatamente onde o clipe A acaba. Um crossfade de zero segundo é válido e representa um corte direto: a janela tem largura zero e o total equivale à soma. Todos os valores usam segundos, e números decimais permitem representar frações de segundo sem configurar uma taxa de quadros.
Interprete corretamente a janela de sobreposição
A janela é informada na linha do tempo combinada, e não como um deslocamento dentro de cada arquivo de origem. O início corresponde à duração do clipe A menos a duração do crossfade; o fim corresponde à duração completa do clipe A. Se o primeiro clipe tiver doze segundos e o crossfade tiver dois, por exemplo, a sobreposição começará no segundo dez e terminará no doze. Portanto, o clipe B começa no ponto inicial informado, enquanto sua parte restante continua depois do fim do clipe A. Esses tempos facilitam a criação de marcadores, comandos de automação e registros de validação, pois descrevem uma única linha temporal compartilhada. O cálculo não analisa amostras, não escolhe curva de fade nem modifica mídia. Ele resolve somente os tempos. Curvas de potência constante, lineares, logarítmicas ou personalizadas podem utilizar a mesma janela; a escolha da curva continua sendo uma decisão separada de mixagem.
Valide a edição antes de renderizar
Um crossfade não pode ser maior que nenhum dos clipes envolvidos. Ambos precisam fornecer material suficiente para cobrir toda a sobreposição, por isso a calculadora rejeita uma transição que exceda a duração do clipe A ou do clipe B. Ela também rejeita durações ausentes, não numéricas, infinitas, negativas ou iguais a zero; o crossfade pode ser zero, mas não negativo. Essa validação é útil em processamento em lote, no qual uma instrução incorreta poderia chegar ao renderizador e falhar somente depois de outras etapas. Use a duração combinada para conferir uma playlist, um episódio ou uma meta de exportação, e aplique os limites da janela para posicionar eventos de forma consistente. Ao encadear vários clipes, faça o cálculo em cada junção ou subtraia uma vez cada crossfade válido da soma total. Esta capacidade modela apenas dois clipes e não considera lacunas, mudanças de velocidade, cortes ou camadas simultâneas adicionais.
Casos de uso
Planejar uma edição de áudio
Calcule a duração final e posicione marcadores precisos antes de criar o crossfade em um editor.
Validar renderizações em lote
Recuse transições impossíveis antes de enviar uma tarefa para um fluxo de renderização de áudio.
Estimar o tempo de uma playlist
Desconte o intervalo sobreposto ao organizar duas músicas, segmentos ou clipes de ambiente.
Perguntas frequentes
Como a duração combinada é calculada?
A calculadora soma as durações dos dois clipes e subtrai o crossfade uma vez, pois esse intervalo é compartilhado.
Onde começa a sobreposição?
Ela começa na duração do primeiro clipe menos o crossfade e termina quando esse primeiro clipe acaba.
A duração do crossfade pode ser zero?
Sim. Zero representa um corte direto, produz uma janela sem largura e mantém inalterada a soma das durações.
O que acontece se o crossfade for maior que um clipe?
A solicitação retorna um erro de entrada inválida, pois cada clipe deve cobrir toda a sobreposição.
Quanto custa uma solicitação pela API?
Cada solicitação pela API custa US$ 0,002. O mesmo cálculo determinístico também pode ser executado no navegador.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
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)Exemplo de requisição
{
"clip_a_duration": 12.5,
"clip_b_duration": 8.25,
"crossfade_duration": 2.75
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "audio.crossfade_duration",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_mb | 200 |
max_minutes | 180 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |