Calcule o deslocamento multicâmera por picos de áudio
Sincronizar imagens multicâmera fica simples quando as duas gravações contêm o mesmo som nítido, como uma palma, claquete ou batida de bateria.
Executar grátis
Informe o instante detectado desse pico compartilhado no primeiro clipe e no segundo. A calculadora subtrai o segundo instante do valor de referência, retorna o deslocamento exato de posicionamento e orienta se você deve atrasar ou adiantar o segundo clipe. Os dois valores são validados, e instantes negativos são rejeitados.
Escolha um pico de áudio compartilhado inequívoco
Comece identificando o mesmo evento acústico nas duas gravações. Uma claquete, palma, estouro de balão ou outro transiente curto funciona bem porque a forma de onda apresenta um pico abrupto e reconhecível. Amplie a forma de onda de cada clipe e anote o instante no mesmo ponto desse pico, usando segundos decimais quando o editor oferecer precisão inferior a um segundo. Trate a primeira câmera como linha do tempo de referência: o instante do pico dela é o ponto que a segunda gravação deverá alcançar. Informe os dois valores nos campos correspondentes. Não compare palmas diferentes nem batidas próximas, pois nem um deslocamento matematicamente exato corrige eventos de origem incompatíveis. A calculadora espera instantes medidos desde o início de cada clipe-fonte, e não posições da linha do tempo após cortes ou edições. Se o clipe já foi cortado de forma destrutiva, use o instante relativo à nova origem ou restaure a mídia original. Ambos os instantes devem ser zero ou positivos; valores negativos são rejeitados.
Leia o deslocamento com o sinal correto
O cálculo usa o instante do pico de referência menos o instante do pico do segundo clipe. Essa convenção descreve onde o começo do segundo clipe deve ficar na linha do tempo do primeiro. Um deslocamento positivo indica que o som comum ocorre antes dentro do segundo clipe; portanto, atrase-o pelo número de segundos retornado. Um valor negativo indica que o som ocorre depois, então você deve adiantar o clipe: a origem dele ficaria antes do começo da referência pelo valor absoluto do resultado. Zero significa que os picos já têm o mesmo instante relativo à fonte. O campo de ajuste repete a interpretação como delay_second_clip, advance_second_clip ou already_aligned, evitando inversões de sinal em automações. O resultado só é arredondado depois de doze casas decimais para remover resíduos de ponto flutuante sem perder precisão útil. Em editores baseados em quadros, converta segundos usando a taxa real do projeto e confira a forma de onda. Preserve segundos quando houver posicionamento de áudio subquadro.
Aplique e confira a sincronização
Posicione o primeiro clipe no ponto de referência desejado e aplique o deslocamento ao início do segundo. Para um valor positivo, mova o segundo clipe para mais tarde pela duração exata. Para um valor negativo, mova-o para mais cedo pela magnitude; caso a linha do tempo não aceite posições anteriores a zero, desloque ambos para a frente mantendo a separação relativa. Reproduza o evento comum e inspecione as formas de onda com bastante ampliação. Os picos transitórios devem coincidir, e silenciar uma faixa não deve revelar uma palma dupla nem eco curto. Este cálculo resolve uma diferença constante de início, comum em câmeras que gravaram continuamente a partir de um evento compartilhado. Ele não mede deriva de relógio, reprodução variável, quadros perdidos, taxas de amostragem diferentes nem cortes internos. Em gravações longas, confira outro som perto do final. Se o pico inicial alinhar e o posterior não, corrija a deriva com ajuste de duração ou fluxo específico, sem alterar este deslocamento inicial. Guarde os instantes originais nas notas para repetir o posicionamento em proxies e mídias finais.
Casos de uso
Sincronizar a gravação de uma entrevista
Alinhe um segundo ângulo à câmera principal usando a palma da claquete captada pelos dois microfones.
Montar uma linha do tempo de show
Use uma batida nítida compartilhada para calcular o início de uma câmera móvel contra a gravação de referência.
Automatizar a preparação de proxies
Armazene um deslocamento determinístico em segundos para um script reutilizar ao organizar fontes correspondentes.
Perguntas frequentes
O que significa o deslocamento?
É o instante do pico do primeiro clipe menos o do segundo. Positivo significa atrasar o segundo; negativo significa adiantá-lo.
O que ocorre se um instante for negativo?
A solicitação falha com erro de entrada inválida, pois um evento detectado não pode ocorrer antes do início da fonte.
Posso informar frações de segundo?
Sim. Segundos decimais preservam a precisão subquadro ou de amostra disponível no seu processo de detecção.
Isto corrige deriva de sincronização?
Não. O cálculo produz um deslocamento constante. Use outro evento posterior para testar diferenças de relógio ou velocidade.
Quanto custa um cálculo pela API?
Cada solicitação de API custa US$ 0,002. O processamento é determinístico e não usa serviços de rede.
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/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)Exemplo de requisição
{
"first_clip_spike_seconds": 12.48,
"second_clip_spike_seconds": 9.73
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "video.multi_cam_sync_offset",
"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 | 500 |
max_minutes | 60 |
max_megapixels | 3.9 |
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. |