Concatenare clip audio: durata e posizioni iniziali
Pianificare una concatenazione audio è più semplice quando tutti i confini sono noti prima del rendering.
Esegui gratis nel browser
Questo calcolatore riceve le durate nell’ordine stabilito, le somma e indica l’istante iniziale di ogni clip nella traccia combinata. Il primo elemento parte sempre da zero, mentre ogni posizione successiva è la somma delle durate precedenti. Lei può usare il risultato per preparare capitoli, sottotitoli, decisioni di montaggio, cue sheet, comandi di riproduzione o controlli, senza caricare né elaborare l’audio.
Inserisca le durate nell’ordine di riproduzione
Indichi una durata in secondi per ogni clip, rispettando esattamente l’ordine di riproduzione. Sono ammessi valori decimali, quindi un clip di 12.375 secondi non deve essere arrotondato. È valido anche zero per segnaposto o elementi che non occupano tempo. Ogni valore deve essere un numero finito e non negativo; una richiesta può includere al massimo 10,000 clip. L’elenco non può essere vuoto, perché una sequenza priva di elementi non ha confini utili. Lo strumento usa soltanto le durate: non esamina file, non decodifica contenuti, non cambia la frequenza di campionamento, non inserisce dissolvenze e non modifica il suono. Può quindi essere impiegato all’inizio del flusso, quando i metadati sono disponibili ma le sorgenti sono ancora remote, pesanti o in attesa di approvazione. Mantenga tutti i valori in secondi e adotti una fonte coerente, affinché la sequenza coincida con il programma che eseguirà la concatenazione.
Legga la sequenza temporale combinata
La risposta contiene due campi. total_duration somma tutte le durate e rappresenta, in secondi, la lunghezza di un’unione senza intervalli. clip_starts è un elenco allineato per indice con l’input. Il primo valore è zero perché il primo clip parte dall’inizio; ogni valore seguente accumula tutti gli elementi precedenti. Se i primi due durano 12.5 e 8.25 secondi, il terzo inizia a 20.75. L’output mantiene secondi numerici anziché trasformarli in orari testuali, facilitando il passaggio a codice, sottotitoli, manifest o editor con convenzioni proprie. I risultati cumulativi sono normalizzati a dodici cifre decimali per eliminare comuni artefatti binari, come una lunga coda nella somma di 0.1 e 0.2, conservando comunque una precisione molto superiore a quella normalmente disponibile nei metadati audio.
Usi le posizioni senza presumere il risultato renderizzato
Consideri le posizioni come un piano deterministico per una sequenza continua, non come misure ricavate da un file già codificato. Una pipeline multimediale reale può cambiare i tempi quando taglia campioni, applica dissolvenze incrociate, inserisce silenzio, ricampiona, aggiunge padding del codec o arrotonda i confini ai fotogrammi. Se il Suo processo include tali operazioni, modifichi le durate per rappresentare il contributo effettivo di ogni clip oppure verifichi il file finale. Per una concatenazione diretta, i valori possono alimentare capitoli, spostamenti delle trascrizioni, etichette delle forme d’onda, navigazione e controlli qualità. Consentono inoltre di confrontare una playlist proposta con un limite massimo prima di impegnare risorse di rendering. Poiché il calcolo è puro e non usa la rete, lo stesso input genera sempre il medesimo risultato nel browser e tramite API. Le richieste automatizzate costano $0.002, mentre la pagina permette una pianificazione locale immediata.
Casi d'uso
Creare marcatori di capitolo
Converta durate ordinate in posizioni esatte per capitoli di podcast, lezioni o audiolibri.
Spostare i riferimenti della trascrizione
Sommi l’inizio di ogni clip ai relativi tempi locali prima di riunire le trascrizioni.
Controllare la durata di una playlist
Calcoli la durata completa e ogni passaggio prima di inviare i contenuti al rendering.
Domande frequenti
Quanto costa una richiesta API?
Ogni richiesta API costa $0.002. Lei può anche eseguire gratuitamente il calcolo locale nel browser.
Quale unità devo utilizzare?
Inserisca tutte le durate in secondi. Sono ammessi i decimali e anche durate e posizioni restituite sono espresse in secondi.
Questa capacità unisce i file audio?
No. Calcola la sequenza di un elenco ordinato; non carica, decodifica, codifica né concatena file multimediali.
L’elenco delle durate può essere vuoto?
No. È necessaria almeno la durata di un clip; un elenco vuoto restituisce un errore di input non valido.
Sono inclusi intervalli o dissolvenze incrociate?
Solo se Lei li considera nelle durate fornite. Il calcolo non aggiunge automaticamente intervalli o sovrapposizioni.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/audio/merge-clips \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"durations":[12.5,8.25,3]}'const res = await fetch("https://api.kit.forhosting.com/audio/merge-clips", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"durations": [
12.5,
8.25,
3
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/audio/merge-clips",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"durations": [
12.5,
8.25,
3
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/audio/merge-clips", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"durations":[12.5,8.25,3]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"durations":[12.5,8.25,3]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/audio/merge-clips", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"durations": [
12.5,
8.25,
3
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "audio.merge_clips",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_mb | 200 |
max_minutes | 180 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |