Accedi Inizia a trasmettere
← Base di conoscenza
Tutte le piattaformeVIDEO

Codificare un video per una trasmissione con HandBrake o ffmpeg

16 lug 2026 · 6 min di lettura

Steam non revisiona una trasmissione prima che vada in onda - valida l'account, la connessione e la codifica. Sbaglia uno solo di questi e il feed viene rifiutato del tutto o cade a metà stream senza preavviso. Qui trattiamo tutti e tre: chi è autorizzato a trasmettere, la specifica di codifica pubblicata da Valve e perché esiste ogni impostazione, dove va effettivamente lo stream e cosa aspettarsi realisticamente una volta in onda.

Questo account può davvero trasmettere?

Niente della codifica qui sotto conta se l'account stesso non è autorizzato a trasmettere, ed è il passaggio che le persone saltano perché non ha nulla a che vedere con il video. Steam richiede che l'account che fa streaming sia non limitato - almeno $5 di spesa storica sulla piattaforma - e che detenga il permesso "Broadcast Live" oppure sia iscritto alla Store Broadcast Beta. L'account deve inoltre possedere o comunque avere accesso al gioco che viene trasmesso, e non può essere Community Banned. Se ne manca anche uno solo, un feed H.264 High@4.1 perfettamente conforme comunque non andrà in onda, e dall'esterno il malfunzionamento sembra identico a una codifica sbagliata - lo stream si rifiuta semplicemente di partire, senza nulla nel log dell'encoder da incolpare. Escludi questo prima di passare una serata a mettere in dubbio le tue impostazioni di bitrate. È un controllo di cinque minuti contro un pozzo senza fondo di codifica di più ore, ed è un'assicurazione a basso costo farlo per primo invece che per ultimo.

La specifica di Valve, per intero

Tutto ciò che segue viene dalla documentazione stessa di Valve su partner.steamgames.com, non da congetture. Il codec video deve essere H.264, Profile High, Level 4.1. Il frame rate è 30 o 60 FPS, il rapporto d'aspetto è 16:9 e l'intervallo dei keyframe deve essere di 2 secondi. Il bitrate massimo è 7000 kbps CBR. L'audio è AAC-LC, con un limite di 128 kbps. Nessuno di questi è un suggerimento - Valve valida lo stream rispetto a essi quando si connette, e un campo fuori specifica è il motivo per cui una trasmissione che sembra a posto nel tuo encoder non va mai in onda. Trattiamo gli stessi numeri con più contesto in specifiche video e codifica per Steam.

Connettersi a Steam: il lato RTMP

Codificare secondo specifica ti dà un feed conforme; devi comunque inviarlo da qualche parte, e questa parte manda in confusione le persone meno spesso perché è più semplice delle impostazioni di codifica, non perché non sia documentata. L'ingest delle trasmissioni di Steam è un endpoint RTMP standard: rtmp://ingest-rtmp.broadcast.steamcontent.com/app. Non scegli tu stesso una regione - Steam sceglie per te il server di upload effettivo in base alla posizione dell'account, allo stesso modo in cui sceglie anche i server di download per le installazioni dei giochi. La chiave dello stream è generata su steamcommunity.com/broadcast/upload sotto "Create RTMP Token." Quando la crei, selezioni l'application ID di base del gioco, non una voce di DLC o demo, dato che la trasmissione si aggancia all'app di base a prescindere da quale edizione stai promuovendo.

OBS è il software a cui la maggior parte delle persone ricorre per testare questo, ma non ha nulla di speciale per Steam - qualsiasi encoder capace di RTMP si connette allo stesso modo, che sia OBS, vMix, un'unità hardware o ffmpeg che spinge dritto all'URL qui sopra con la tua chiave dello stream. In termini di OBS, è il servizio di streaming "Custom", con l'URL di ingest nel campo Server e la chiave nel campo Stream Key. Al livello RTMP non importa cosa ha prodotto i bit, solo che corrispondano alla specifica di Valve una volta arrivati.

Una cosa che vale la pena controllare se la connessione proprio non si stabilisce, separatamente da qualunque cosa riguardi la codifica: RTMP gira di default sulla porta TCP 1935. Su una connessione domestica raramente è un problema, ma su una rete d'ufficio, una VPN aziendale o una VM cloud blindata, la 1935 in uscita può essere bloccata da un firewall che non ha alcun problema con il normale traffico web sulle 80 e 443. Se l'encoder non riesce proprio a raggiungere l'URL di ingest - non uno stream rifiutato, proprio nessuna connessione - è la prima cosa da escludere prima di dare per scontato che sia un problema dal lato di Steam.

L'unica impostazione che fallisce senza appello: l'intervallo dei keyframe

La maggior parte dei campi della specifica degrada in modo indulgente se sei leggermente fuori - un bitrate un po' sopra il tetto potrebbe semplicemente venire limitato dall'ingest di Steam. L'intervallo dei keyframe non funziona così. Valve è esplicita sul fatto che se non è esattamente di 2 secondi, il tuo stream non riuscirà a partire. Nessuno sconto.

Un intervallo dei keyframe di 2 secondi significa che un frame completo viene codificato ogni 2 secondi, con i frame intermedi che vi fanno riferimento. A 30 fps è una lunghezza di GOP di 60 frame; a 60 fps è 120. La maggior parte degli encoder ha come impostazione predefinita qualcos'altro - spesso 4 o 5 secondi, tarati per la dimensione del file piuttosto che per la conformità dal vivo - quindi è l'impostazione che le persone si lasciano sfuggire anche quando tutto il resto è corretto. Valve menziona vMix per nome qui: il suo default è Main Profile a Level 3.0, e quella combinazione va cambiata prima che un output di vMix passi. Prendilo come un avvertimento che probabilmente nemmeno le impostazioni predefinite del tuo encoder sono quelle di Steam, e controllale esplicitamente invece di darle per scontate.

Perché bitrate costante, non variabile

La specifica di Valve richiede CBR, non VBR, e il motivo è specifico dello streaming dal vivo piuttosto che della qualità video in generale. Il bitrate variabile permette all'encoder di spendere più bit sui frame complessi e meno su quelli semplici, il che è ottimo per un file che guarderai una volta dall'inizio alla fine. Un server di ingest dal vivo deve gestire il buffer rispetto a un data rate atteso pressoché costante; uno stream che oscilla da 2000 kbps a 9000 kbps e ritorno fa sì che quel buffer o si svuoti o trabocchi, e in entrambi i casi si manifesta come scatti o come una connessione caduta. Il CBR sacrifica un po' di qualità sulle scene semplici in cambio di un data rate su cui il lato ingest può pianificare, che è esattamente ciò di cui una trasmissione 24/7 ha bisogno.

7000 kbps è il tetto documentato da Valve, non un obiettivo. Andarci proprio a ridosso non lascia margine se il tuo materiale sorgente schizza brevemente sopra il valore impostato, che è un comportamento normale dell'encoder anche in modalità CBR. Un obiettivo più sicuro è codificare un paio di centinaia di kbps sotto il tetto - 6000 kbps è una scelta ragionevole, ed è ciò che usiamo di default per lo stesso motivo.

Cosa fa Steam con il tuo feed dopo l'ingest

Vale la pena sapere cosa succede al feed una volta che viene accettato, soprattutto per non costruire troppo attorno a un problema che Steam risolve già. Una volta che una trasmissione supera circa 10 spettatori simultanei, Steam attiva automaticamente la transcodifica e genera versioni a risoluzione più bassa - 720p, 480p e 360p - accanto al tuo feed originale a 1080p. Questo avviene interamente lato server; non carichi mai più di uno stream e non configuri mai tu stesso una scala di risoluzioni. Il singolo feed CBR descritto sopra è l'unica codifica di cui sei responsabile. Se sei abituato a piattaforme dove spingi tu stesso più varianti di bitrate, qui puoi lasciar perdere quell'abitudine - un solo feed pulito a 1080p secondo la specifica sopra è tutto il lavoro, e significa anche che la qualità di quel singolo feed conta di più, non di meno, dato che è il master da cui tutto il resto viene derivato al di sotto della soglia di transcodifica.

Codifica in HandBrake

HandBrake ti darà un output conforme, ma i campi che contano per Steam si trovano al di fuori dei suoi preset predefiniti. Imposta il contenitore su MP4 e il codec video su H.264 (x264). Sotto Framerate, scegli il tuo obiettivo - 30 o 60 - e impostalo su Constant, non su Variable. Per il controllo del bitrate, usa Average Bitrate e impostalo a 6000 kbps invece di una modalità basata sulla qualità (CRF), dato che il CRF produce per progettazione un bitrate variabile.

Il profile, il level e l'intervallo dei keyframe si trovano nella stringa di opzioni x264 della scheda Advanced. Imposta Profile su High e Level su 4.1 nei rispettivi menu a tendina, poi aggiungi keyint=60:min-keyint=60 alla stringa di opzioni per 30 fps, oppure keyint=120:min-keyint=120 per 60 fps - è il tuo intervallo di 2 secondi espresso in frame. Nella scheda audio, codifica in AAC a 128 kbps.

La stessa cosa in ffmpeg

Se preferisci farlo da script, ogni campo qui sopra corrisponde a un flag. Questo codifica secondo le specifiche a 30 fps con un obiettivo di 6000 kbps e un GOP di 2 secondi:

ffmpeg -i input.mp4 -c:v libx264 -profile:v high -level 4.1 -r 30 -g 60 -keyint_min 60 -sc_threshold 0 -b:v 6000k -maxrate 6000k -bufsize 12000k -c:a aac -b:a 128k -ar 44100 -pix_fmt yuv420p output.mp4

La combinazione che vale la pena spiegare è -b:v, -maxratee -bufsize impostati sugli stessi valori o su valori correlati - è ciò che fa sì che libx264 si attenga davvero al CBR invece di scivolare verso il suo comportamento predefinito simile al VBR. -g 60 è la lunghezza del GOP per 30 fps (usa 120 a 60 fps), e -sc_threshold 0 impedisce all'encoder di inserire un keyframe extra ai cambi di scena, cosa che altrimenti spezzerebbe l'intervallo fisso di 2 secondi richiesto da Valve.

Controllare l'output prima di mandarlo in diretta

Invece di fidarti che il tuo encoder abbia fatto ciò che gli hai chiesto, vale la pena rileggere il file prima di indirizzarlo all'ingest di Steam. ffprobe, che viene distribuito insieme a ffmpeg, stamperà il profilo, il livello e il frame rate effettivi che trova nell'output, anziché quelli che hai richiesto:

ffprobe -v error -select_streams v:0 -show_entries stream=profile,level,r_frame_rate,bit_rate -of default=noprint_wrappers=1 output.mp4

Questo restituisce esattamente ciò che è stato scritto nel file - se il profilo indica "Main" invece di "High", o il livello risulta 3.1 invece di 4.1, lo saprai prima che Steam te lo faccia capire nel modo più duro. La lunghezza del GOP è un po' più laboriosa da confermare direttamente, ma un controllo approssimativo è contare i pacchetti video nei primi secondi; a 30 fps con un intervallo di 2 secondi dovresti vedere un keyframe all'incirca ogni 60 frame. È un piccolo passo, ma trasforma "lo stream è stato rifiutato, e adesso?" in "il livello è sbagliato, correggi quel solo campo" - un ciclo di debug molto più breve.

Latenza: cosa aspettarsi davvero

Valve non pubblica un dato ufficiale sulla latenza per le trasmissioni sulla pagina del negozio, quindi tratta tutto ciò che leggi in merito - compreso qui - come un dato riportato, non come una specifica. Con questa premessa: gli utenti riferiscono comunemente una latenza di circa 30 secondi sulle trasmissioni del negozio, contro circa 15 secondi su Twitch. Le stesse patch notes di Valve hanno dichiarato una latenza inferiore a 1 secondo, ma specificamente per le trasmissioni tra amici 1-a-1, non per il feed della pagina del negozio, e alcuni utenti riferiscono che quel miglioramento non è mai comparso affatto sulle trasmissioni del negozio. Prendi il dato di ~30 secondi come un numero approssimativo riportato dalla community, piuttosto che qualcosa che Valve garantisce per iscritto.

Per un video pre-registrato in loop, niente di tutto questo conta in pratica. La latenza diventa un problema solo quando qualcuno dall'altra parte ha bisogno di interagire con ciò che sta succedendo dal vivo - leggere la chat, reagire in tempo reale, cronometrare un conto alla rovescia. Un loop 24/7 di un trailer o di uno spezzone di gameplay non ha nulla di dal vivo da desincronizzare, quindi un ritardo di 30 secondi è invisibile per chi si limita a guardare la tua pagina del negozio. È un vincolo reale solo se stai cercando di far passare qualcosa di interattivo attraverso la stessa connessione; vedi mandare in onda una trasmissione pre-registrata in loop per cosa funziona bene e cosa no come loop.

Oppure salta del tutto l'encoder

Tutto quanto sopra esiste perché l'ingest di Steam è intransigente sulla codifica, non perché i numeri siano difficili da trovare. Con Loopcast carichi qualunque file tu abbia e noi lo transcodifichiamo automaticamente a 1920x1080 a 30 fps, con un intervallo tra i keyframe di 2 secondi, 6000 kbps CBR e audio AAC-LC a 128 kbps e 44.1 kHz - la stessa specifica trattata sopra, applicata senza che tu tocchi un'impostazione del codec o un URL RTMP. Una volta ottenuta una chiave di trasmissione da Steam, vedi come ottenere un chiave di trasmissione per collegarlo, e se uno stream dovesse rifiutarsi di partire, risoluzione dei problemi di trasmissione copre le cause più comuni, sia di codifica che di idoneità.

Salta le impostazioni dell'encoder

Carica un video, incolla il tuo chiave di trasmissione Steam, premi avvia. A partire da $0.72/giorno.

Inizia a trasmettere · $0.72/giorno
Sei bloccato? Chiedi sul nostro Discord →