Calcule os tempos dos anúncios de podcast
Transforme a duração de um episódio e três posições de anúncio em percentuais em tempos exatos, prontos para produção.
Executar grátis
Informe a duração em segundos, escolha entre 0 e 100 por cento onde o pre-roll, o mid-roll e o post-roll devem ocorrer e receba tanto deslocamentos numéricos quanto códigos de tempo legíveis. Como o cálculo é determinístico, produtores, equipes de operações de mídia e sistemas de publicação podem repetir as mesmas regras de posicionamento sem percorrer manualmente cada episódio.
Converta percentuais de campanha em tempos prontos para edição
Planos de publicidade em podcasts costumam definir posições por percentual, pois uma referência relativa funciona bem em episódios de durações diferentes. Uma orientação como “coloque o mid-roll em 50 por cento” é fácil de padronizar, mas o editor ou sistema de publicação ainda precisa de um código de tempo preciso. Esta calculadora multiplica a duração do episódio por cada percentual solicitado e retorna o deslocamento em segundos junto com um horário HH:MM:SS.mmm legível. Informe a duração completa em segundos e depois um percentual para pre-roll, mid-roll e post-roll. Em um episódio de 3,600 segundos, 2.5 por cento corresponde a 90 segundos, 50 por cento a 1,800 segundos e 97.5 por cento a 3,510 segundos. Os resultados nomeados mantêm cada posição ligada à função correta e reduzem o risco de copiar um valor para o campo errado. Como a aritmética é sempre determinística, a saída serve para notas de produção, manifestos de inserção, folhas de aprovação e automações que exigem marcadores consistentes em todo o catálogo.
Entenda a precisão, os limites e a validação
Cada percentual é medido a partir do início do episódio. Assim, 0 por cento aponta para a abertura, enquanto 100 por cento coincide exatamente com a duração total. Valores intermediários geram posições proporcionais e aceitam frações como 12.5 ou 87.25. Os deslocamentos numéricos são retornados com até seis casas decimais, e os horários de exibição são arredondados para o milissegundo mais próximo, precisão comum em editores de áudio e interfaces de publicação. A calculadora rejeita percentuais abaixo de 0 ou acima de 100 em vez de ajustá-los silenciosamente, pois isso poderia mover o anúncio para outro ponto e ainda aparentar sucesso. Ela também rejeita durações ausentes, não numéricas, infinitas ou não positivas. Essas verificações revelam erros antes que os horários cheguem ao fluxo de inserção. A ferramenta não decide se a posição é editorialmente adequada, não detecta pausas de fala e não desloca marcadores para evitar música ou diálogo. Ela executa a conversão proporcional com exatidão e deixa decisões relacionadas ao conteúdo para a produção.
Use os resultados no fluxo de produção do podcast
A lista retornada segue a ordem pre-roll, mid-roll e post-roll. Cada registro contém o percentual original, o deslocamento numérico em segundos e o horário formatado. Um produtor pode copiar o valor legível para uma lista de decisões de edição ou planilha do episódio, enquanto uma integração consome diretamente o deslocamento sem interpretar uma string de tempo. Essa representação dupla ajuda quando uma equipe revisa posições visualmente e outra envia dados estruturados ao servidor de anúncios. Em programas recorrentes, mantenha os percentuais da campanha como política estável e processe a duração final de cada novo episódio. Dessa forma, o espaçamento relativo permanece igual mesmo quando a duração muda semanalmente. Antes da publicação, confira os marcadores no arquivo master final, e não em um corte preliminar, porque reduzir a abertura ou acrescentar créditos altera a duração total e todas as posições proporcionais. O preço da API é US$ 0,002 por solicitação, e a implementação no navegador usa a mesma lógica. Nenhum áudio é enviado: somente duração e percentuais são processados.
Casos de uso
Prepare uma planilha de inserção de anúncios
Converta o plano percentual do patrocinador em horários que o editor possa inserir diretamente na planilha do episódio.
Padronize posições em uma série
Aplique a mesma política relativa de pre-roll, mid-roll e post-roll a episódios com durações finais diferentes.
Alimente uma publicação automatizada
Use deslocamentos numéricos em integrações e mantenha horários legíveis para revisão e aprovação por pessoas.
Perguntas frequentes
Quanto custa usar a calculadora pela API?
Cada solicitação à API custa US$ 0,002. Você também pode executar o cálculo no navegador com a mesma lógica determinística.
Qual unidade devo usar para a duração do episódio?
Informe a duração completa em segundos. Segundos decimais são aceitos quando a fonte possui precisão inferior a um segundo.
Um percentual pode ser exatamente 0 ou 100?
Sim. O valor 0 aponta para o início do episódio, e 100 aponta exatamente para o horário final.
O que acontece se um percentual estiver fora do intervalo?
A solicitação retorna um erro de entrada inválida e identifica o campo correspondente. Os valores nunca são cortados ou reajustados.
Qual é a precisão dos horários retornados?
Os deslocamentos numéricos preservam até seis casas decimais, e o código legível é arredondado para o milissegundo mais próximo.
A ferramenta analisa ou envia o áudio do podcast?
Não. Ela usa apenas a duração e os percentuais informados; nenhum arquivo de áudio é recebido, analisado ou armazenado.
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/podcast-ad-slot-timing \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"duration_seconds":3600,"pre_roll_percent":2.5,"mid_roll_percent":50,"post_roll_percent":97.5}'const res = await fetch("https://api.kit.forhosting.com/audio/podcast-ad-slot-timing", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"duration_seconds": 3600,
"pre_roll_percent": 2.5,
"mid_roll_percent": 50,
"post_roll_percent": 97.5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/audio/podcast-ad-slot-timing",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"duration_seconds": 3600,
"pre_roll_percent": 2.5,
"mid_roll_percent": 50,
"post_roll_percent": 97.5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/audio/podcast-ad-slot-timing", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"duration_seconds":3600,"pre_roll_percent":2.5,"mid_roll_percent":50,"post_roll_percent":97.5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"duration_seconds":3600,"pre_roll_percent":2.5,"mid_roll_percent":50,"post_roll_percent":97.5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/audio/podcast-ad-slot-timing", 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
{
"duration_seconds": 3600,
"pre_roll_percent": 2.5,
"mid_roll_percent": 50,
"post_roll_percent": 97.5
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "audio.podcast_ad_slot_timing",
"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. |