Inserire sottotitoli in un video con Rendi e un file SRT
Scopri come inserire sottotitoli in un video con Rendi: prepara l'SRT, invia il job FFmpeg e verifica l'MP4 prima di automatizzare il rendering.

Per inserire sottotitoli in un video partendo da un filmato approvato e da un file SRT già verificato, non serve aggiungere alla propria infrastruttura un worker per l'elaborazione video. Rendi esegue come job API il normale filtro per sottotitoli di FFmpeg, restituisce un ID di comando e, al termine del rendering, mette a disposizione l'output archiviato. Il confine da tenere presente è semplice: questa procedura imprime sottotitoli esistenti nei pixel. Non trascrive l'audio e non stabilisce se il testo è corretto.
Come inserire sottotitoli in un video: la risposta breve
Conviene imprimere il file SRT nel video quando tutti devono vedere gli stessi sottotitoli, indipendentemente da come il player gestisce le tracce. È invece meglio mantenere separato l'SRT quando chi guarda deve poter disattivare i sottotitoli, cambiare lingua o usare i controlli di accessibilità del player.
Con Rendi, il flusso operativo è questo:
- Verificare insieme il video definitivo e il file SRT.
- Rendere entrambi i file disponibili tramite URL accessibili da Rendi, oppure caricare prima su Rendi quelli locali.
- Inviare il comando FFmpeg documentato per i sottotitoli.
- Eseguire il polling dell'ID di comando oppure affidare a un webhook la ricezione del risultato finale.
- Controllare i metadati dell'MP4 e guardare per intero l'output prima di inviare altri job.
L'ordine è importante. Anche un encoder che termina correttamente può produrre un file inutilizzabile se un sottotitolo compare in anticipo, un nome è sbagliato o il testo finisce sotto l'interfaccia della piattaforma.

Che cosa fa davvero Rendi
Rendi gestisce la sala macchine, non il lavoro editoriale. Riceve via API HTTP la stessa istruzione FFmpeg che verrebbe eseguita in locale. La richiesta funziona come un ordine di lavorazione: gli alias di input indicano dove si trovano i materiali, la stringa FFmpeg descrive l'operazione e l'alias di output assegna un nome al risultato.
Lo schema attuale della richiesta richiede ffmpeg_command e output_files. Le chiavi di input iniziano con in_, quelle di output con out_; gli stessi nomi ricompaiono nel comando tra doppie parentesi graffe. Quando l'invio va a buon fine, la risposta contiene un command_id, cioè l'identificativo con cui seguire il job.
Nel caso più semplice, video e SRT sono disponibili tramite URL HTTP pubblici o firmati e a scadenza, con il nome del file in coda all'indirizzo. Un percorso locale sul portatile non è un URL di input. Per i file locali Rendi offre anche un flusso di caricamento diretto multipart, compatibile con file fino a 5 TB, ma si tratta di una fase preparatoria distinta.
Sottotitoli impressi e tracce selezionabili producono output diversi
I sottotitoli impressi entrano a far parte di ogni fotogramma decodificato. L'aspetto rimane quindi prevedibile, ma la scelta diventa definitiva: correggere un refuso richiede un nuovo rendering e chi guarda non può nascondere il testo.
Una traccia di sottotitoli selezionabile resta invece separata dalle immagini. Per inserire una traccia soft in un MP4, lo stesso esempio di Rendi consiglia mov_text e non applica il filtro video. In questo modo si conserva il controllo dell'utente e il testo non viene incorporato nell'immagine.

La regola pratica è netta: per un master di revisione o un file destinato ai social, i sottotitoli impressi funzionano quando serve uniformità visiva. L'SRT originale va comunque conservato; dove contano accessibilità, ricerca, traduzione o libertà di scelta, è opportuno fornire anche una traccia selezionabile o un file sidecar.
Controllare l'SRT prima di avviare il rendering
Il rendering meno costoso è quello che non bisogna ripetere. L'SRT va controllato sul montaggio definitivo, non su un'esportazione precedente. Occorre verificare l'ordine dei cue, i tempi di inizio e fine, la grafia di nomi e numeri, le interruzioni di riga volute e un campione rappresentativo di caratteri accentati o non latini. Vanno inoltre individuati i sottotitoli che si sovrappongono alle grafiche nella fascia inferiore o si avvicinano troppo al bordo basso.
In questa fase non va confusa la trascrizione tramite AI con il rendering. Il riconoscimento vocale può generare una prima bozza dell'SRT a monte, ma il file dovrebbe entrare in questo flusso solo dopo l'approvazione del testo e della sincronizzazione da parte di una persona o di un processo di revisione affidabile. Qui Rendi si occupa esclusivamente del rendering.
Inviare a Rendi un job con uno stile definito
Questo esempio in Node.js usa il video e l'SRT di esempio pubblici di Rendi, quindi per eseguirlo serve soltanto RENDI_API_KEY. Il payload rispetta i nomi dei campi e le regole degli alias presenti nell'OpenAPI attuale di Rendi. I valori di force_style producono testo bianco con contorno nero e margine inferiore, mentre libx264 e AAC generano l'MP4 descritto nella procedura Rendi per i sottotitoli.
const headers = {
"X-API-KEY": process.env.RENDI_API_KEY,
"Content-Type": "application/json",
};
const submit = await fetch("https://api.rendi.dev/v1/run-ffmpeg-command", {
method: "POST",
headers,
body: JSON.stringify({
input_files: {
in_video: "https://storage.rendi.dev/sample/big_buck_bunny_720p_16sec.mp4",
in_srt: "https://storage.rendi.dev/sample/subtitles.srt",
},
output_files: { out_1: "subtitled.mp4" },
ffmpeg_command:
"-i {{in_video}} -vf \"subtitles={{in_srt}}:force_style='FontSize=22,PrimaryColour=&H00FFFFFF,OutlineColour=&H00000000,BorderStyle=1,Outline=2,Shadow=0,MarginV=36'\" -c:v libx264 -crf 20 -c:a aac -b:a 192k {{out_1}}",
}),
});
if (!submit.ok) throw new Error(await submit.text());
const { command_id } = await submit.json();
for (;;) {
const poll = await fetch(
`https://api.rendi.dev/v1/commands/${command_id}`,
{ headers: { "X-API-KEY": process.env.RENDI_API_KEY } },
);
const job = await poll.json();
if (job.status === "SUCCESS") {
console.log(job.output_files.out_1);
break;
}
if (job.status === "FAILED") throw new Error(job.error_message);
await new Promise((resolve) => setTimeout(resolve, 2000));
}Il filtro per i sottotitoli modifica i fotogrammi, quindi è necessario ricodificare il video. Stile, codec e qualità possono essere regolati, ma ogni modifica va considerata un nuovo output da verificare. Il cheatsheet FFmpeg ufficiale di Rendi documenta anche l'uso di font personalizzati tramite fontsdir e FontName. Prima di applicarli a un'intera libreria, bisogna provare il font e il set di glifi effettivi.
Che cosa è stato verificato davvero
L'11 settembre 2026, l'endpoint, i campi della richiesta, le regole degli alias, i valori di stato e i campi della risposta indicati sopra sono stati verificati sul file OpenAPI in produzione di Rendi. Lo stesso filtro per sottotitoli è stato inoltre eseguito in locale con FFmpeg 8.0.1 sul video e sull'SRT di esempio pubblici di Rendi. Il risultato è stato un MP4 di 16 secondi, 1280 per 720, con video H.264 e audio AAC; in un fotogramma a cinque secondi era chiaramente visibile il sottotitolo atteso.
Non è stato inviato alcun job al cloud di Rendi perché nell'ambiente non era presente una chiave API Rendi. Il codice è stato verificato rispetto allo schema e l'operazione FFmpeg è stata provata in locale, ma non si dichiara un'esecuzione sul cloud.
Polling per i job brevi, webhook per quelli più lunghi
L'endpoint di stato di Rendi può restituire QUEUED, PROCESSING, PREPARED_FFMPEG_COMMAND, FAILED o SUCCESS. Un POST accettato non equivale a un video completato. Bisogna attendere uno stato finale, mostrare error_message in caso di errore e leggere l'output soltanto dopo il successo.
Rendi consiglia il polling per i job che dovrebbero concludersi in circa 30 secondi o meno e un webhook per le elaborazioni più lunghe. Il webhook contiene gli stessi dati del comando completato disponibili tramite polling. In produzione, il gestore del completamento deve essere idempotente, rispondere rapidamente e mantenere il polling come procedura di recupero in caso di mancata consegna del webhook.
Per gli output sensibili, su un piano a pagamento è possibile impostare is_private: true e richiedere un URL prefirmato durante il polling. L'archiviazione è pubblica per impostazione predefinita. Un file privato non ha un URL pubblico permanente e il link di download richiesto può avere una durata massima di 7 giorni.
Controllare l'output prima di avviare una lavorazione in batch
SUCCESS dimostra che FFmpeg ha terminato, non che i sottotitoli siano validi. Vanno controllati sia la risposta leggibile dalla macchina sia il video vero e proprio.
Per prima cosa bisogna verificare che output_files.out_1 esista e che il relativo storage_url sia raggiungibile. Durata, dimensioni, codec e formato restituiti vanno confrontati con quelli previsti per la consegna. Poi occorre guardare tutto il video, prestando particolare attenzione al primo e all'ultimo cue, allo scambio più rapido, alle interruzioni di riga, a nomi e numeri e ai sottotitoli vicini a stacchi di montaggio o sovrimpressioni grafiche.
Solo dopo questa verifica lo stesso preset di stile può entrare in coda. È utile conservare insieme la revisione del video sorgente, la revisione dell'SRT, il comando FFmpeg, l'ID del comando Rendi, l'ID del file di output e la decisione del revisore. È questo registro a trasformare una raccolta di rendering in un sistema di produzione.
Il costo dipende dai byte, non dai minuti
Rendi conteggia la dimensione complessiva dei media in input e in output. Nel suo esempio di prezzo, un input da 1 GB più un output da 0.5 GB corrispondono a 1.5 GB di elaborazione. Seguendo esattamente questo esempio, i 50 GB inclusi nel piano Free coprono 33 job completi e lasciano 0.5 GB, mentre i 250 GB del piano Pro di ingresso coprono 166 job completi e lasciano 1 GB.

Il numero di job deriva aritmeticamente dall'esempio di Rendi e non costituisce un benchmark sui sottotitoli. Un MP4 con testo impresso può pesare di più o di meno a seconda del sorgente, delle impostazioni del codec e dell'output. Prima di stimare i volumi, bisogna misurare il totale effettivo di input e output.
Free costa $0 al mese, include 50 GB di elaborazione e limita ogni comando a 1 minuto di esecuzione. Il piano Pro di ingresso costa $25 al mese, include 250 GB e alza il limite per comando a 10 minuti. La panoramica completa dei prezzi di Rendi copre le configurazioni con maggiore capacità di calcolo e durata di esecuzione illimitata, evitando di ripetere qui l'intera matrice.
Il confronto davvero utile è operativo. Kapwing Pro è indicato a $16 per membro al mese con fatturazione annuale, oppure a $24 con fatturazione mensile. Per un'attività occasionale, un editor visuale è più semplice. Rendi è più adatto quando la finalizzazione dei sottotitoli è una fase ripetibile del sistema, avviata da risorse approvate e tracciata senza costringere un'altra persona ad aprire un editor.
I sette workflow che ne traggono più vantaggio
Non è la soluzione ideale per chiunque aggiunga sottotitoli. Il caso d'uso più adatto è quello di un team che dispone già di un SRT approvato e ripete di continuo il rendering finale.
Tre prodotti che vale la pena costruire
1. Un sistema batch per sottotitoli coerenti con il brand
È l'opportunità più solida. Si può creare un portale mirato per content team e agenzie: URL del video accettato, SRT approvato, preset di stile con nome, pagina di revisione e MP4 scaricabile. Il prodotto vende ripetibilità e approvazione, non un editor generico.
Negli Stati Uniti, circa 1,900 ricerche mensili riguardano add subtitles to a video, mentre Kapwing Pro parte da $16 per membro al mese con fatturazione annuale. La domanda è abbastanza ampia da attirare utenti e il workflow ricorrente dei team è sufficientemente specifico da sostenere un prodotto focalizzato.
La versione minima vendibile richiede input tramite URL firmati, validazione dell'SRT, alcuni preset di brand bloccati, invio a Rendi, gestione dei webhook, metadati dell'output e approvazione o rifiuto da parte di una persona. Il problema è la difendibilità: un modulo costruito attorno a una singola chiamata FFmpeg si copia facilmente. Il valore duraturo deve arrivare dallo storico delle approvazioni, dalle regole di brand riutilizzabili, dall'abbinamento delle revisioni e da un recupero affidabile in caso di errore.
2. Un'API di rendering dei sottotitoli pensata per l'automazione
L'idea è offrire un solo endpoint stabile alle agenzie che non vogliono esporre i propri clienti alla sintassi FFmpeg. Il cliente invia l'URL del video, l'URL dell'SRT, il nome del preset e l'URL di callback; il servizio converte il preset in un comando verificato e restituisce un risultato normalizzato del job.
Burn subtitles into video registra 40 ricerche mensili negli Stati Uniti e un CPC di $8.16. Il volume è modesto, ma l'intento è molto specifico. La domanda PAA «Come posso imprimere in modo permanente i sottotitoli SRT in un video?» coincide quasi con la richiesta del prodotto.
Un MVP richiede autenticazione, validazione della richiesta, mappatura dei job Rendi, chiavi di idempotenza, verifica dei webhook, gestione dello stato compatibile con retry sicuri e registri di utilizzo. Il limite è la distribuzione: la sola ricerca non può sostenere l'attività e Rendi offre già l'API sottostante. Il wrapper deve distinguersi grazie a integrazioni per le agenzie, preset, osservabilità e assistenza.
3. Un controllo preliminare dei sottotitoli con consegna in due formati
Si può costruire un passaggio di revisione che verifica un SRT rispetto al video definitivo, quindi genera dalla coppia approvata un MP4 di revisione con sottotitoli impressi e un MP4 di consegna con traccia selezionabile. Il cliente è un team di localizzazione, formazione o media operations che continua a perdere il riferimento tra la revisione dei sottotitoli e il relativo montaggio.
La domanda PAA reale «Come si aggiungono sottotitoli SRT a un video?» compare insieme alla ricorrente confusione tra sottotitoli permanenti e selezionabili nei risultati attuali. Il prodotto risolve entrambi i lavori senza obbligare l'operatore a scegliere da solo i meccanismi del container.
L'MVP richiede parsing dei cue, confronto delle durate, anteprima dell'area sicura, ID di revisione, due procedure FFmpeg controllate e un registro dell'approvazione. Il limite è che la validazione di base di un SRT è una funzionalità, non un'azienda. Lo storico di revisione e i controlli sulla consegna devono offrire un valore sufficiente perché i team mantengano il prodotto nel proprio processo di pubblicazione.
Limiti e valutazione onesta
Rendi elimina da questo workflow la necessità di gestire l'infrastruttura FFmpeg, non la responsabilità editoriale. Non corregge una trascrizione, non sistema una sincronizzazione sbagliata, non sceglie interruzioni di riga leggibili e non decide se i sottotitoli impressi siano il formato di accessibilità appropriato.
Inoltre, il burn-in non può essere lossless. Il filtro per i sottotitoli modifica i fotogrammi, quindi il video viene ricodificato. Qualità, tempo di esecuzione e dimensione dell'output dipendono dal comando e dal sorgente. Il limite di sicurezza predefinito dell'API è 300 secondi, mentre il piano determina il massimo richiedibile. Per un job lungo o impegnativo sul piano computazionale serve quindi un piano con un tetto di esecuzione adeguato alla codifica effettiva.
Questo flusso non è indicato per una singola clip occasionale se basta già uno strumento gratuito nel browser. I sottotitoli non vanno impressi se chi guarda deve poterli attivare e disattivare. E uno stile non verificato non va applicato in batch. Rendi diventa interessante quando la stessa regola di finalizzazione, già approvata, deve essere eseguita in modo affidabile su molti contenuti.
Cosa fare lunedì
Prendere un video breve e approvato insieme al suo SRT definitivo. Rendere entrambi accessibili tramite URL, eseguire il payload di esempio con lo stile scelto, controllare i metadati restituiti e guardare l'intero MP4 sullo schermo più piccolo supportato. Solo dopo questa verifica il comando accettato va salvato come preset. A quel punto lo si può collegare alla fase in cui il workflow contrassegna già video e sottotitoli come approvati.
Come posso imprimere in modo permanente i sottotitoli SRT in un video?
Bisogna usare il filtro video subtitles di FFmpeg per disegnare il testo in ogni fotogramma, quindi codificare un nuovo video. In Rendi, il video sorgente e l'SRT vanno associati ad alias in_, il nome dell'MP4 a un alias out_; poi si invia il comando e si attende SUCCESS prima di scaricare e verificare il risultato.
Come si imprimono i sottotitoli in un video?
Si parte dal video definitivo e da un file di sottotitoli approvato. Il burn-in è adatto quando il testo deve rimanere sempre visibile; una traccia selezionabile è preferibile quando il controllo deve restare a chi guarda. Per Rendi, il percorso documentato usa -vf subtitles={{in_srt}} e ricodifica il video.
Come si aggiungono sottotitoli SRT a un video?
L'SRT può essere impresso nei pixel oppure allegato come traccia separata. Nel primo caso l'aspetto resta fisso ovunque, ma i sottotitoli non possono essere disattivati. Una traccia soft rimane modificabile e selezionabile. Rendi documenta sia il filtro subtitles per il burn-in sia mov_text per una traccia MP4 selezionabile.
Come si imprimono i sottotitoli in un video con HandBrake?
HandBrake offre un'interfaccia desktop con cui aggiungere un SRT esterno e contrassegnarlo per il burn-in. È una scelta sensata per attività manuali occasionali. Rendi risponde a un'esigenza diversa: inviare via API l'operazione FFmpeg equivalente quando il rendering fa parte di un sistema automatizzato.
Per integrare nella propria attività una pipeline media verificata di questo tipo, è disponibile la pagina dedicata ai sistemi di produzione AI.
- Ultimo aggiornamento
- 11 set 2026
- Categoria
- Build







