Guida encoder: profilo H.264 Main per compatibilità HbbTV e Smart TV (vMix / OBS)
Questa guida spiega come configurare in modo corretto l’encoder (vMix o OBS) per ottenere stream più compatibili con HbbTV e Smart TV (Samsung Tizen, LG webOS, ecc.). L’obiettivo è evitare incompatibilità legate a profili H.264 non desiderati e assicurare una riproduzione stabile su dispositivi con decoder più “rigidi”.
- Obiettivo e cosa cambia davvero
- Perché il profilo H.264 conta su HbbTV/Smart TV
- Preset consigliati (Main, Level, GOP, audio)
- Qualità e bitrate consigliati (ABR ladder)
- Come impostare vMix (passo per passo)
- Come impostare OBS (x264 e NVENC)
- Come verificare che lo stream sia “Main” (ffprobe)
- Checklist rapida prima di andare live
- Troubleshooting
1) Obiettivo e cosa cambia davvero
L’obiettivo è produrre un flusso H.264 con:
- Profile: Main (evitare profili indesiderati quando serve standardizzare)
- Level coerente con risoluzione e frame-rate (es. 720p50 tipicamente Level 3.1)
- GOP regolare (keyframe interval stabile) per HLS/DASH
- Audio AAC-LC standard
Una volta applicate le impostazioni, i dispositivi HbbTV/Smart TV tendono a riprodurre in modo più stabile, con meno casi di buffering anomalo o stream che non parte.
2) Perché il profilo H.264 conta su HbbTV/Smart TV
Su PC e smartphone quasi tutto è tollerato. Su TV e ambienti HbbTV, invece, il decoder è spesso più selettivo: se il flusso presenta una combinazione “strana” di profilo/level/GOP o parametri fuori specifica, alcuni modelli:
- non avviano la riproduzione,
- avviano ma saltano,
- agganciano e poi “girano a vuoto” (buffer infinito),
- mostrano audio senza video o viceversa.
Se vuoi massima compatibilità: mantieni parametri “noiosi” e standard. Profile Main, level corretto, GOP stabile, audio AAC-LC, niente trick aggressivi.
3) Preset consigliati (Main, Level, GOP, audio)
- Codec: H.264 / AVC
- Profile: Main
- Level: 3.1 per 720p50; 4.0/4.1 per 1080p (dipende da fps/bitrate)
- Frame-rate: coerente con sorgente (25/50 tipico broadcast)
- Keyframe interval (GOP): 2 secondi (es. 50 fps -> keyint 100; 25 fps -> keyint 50)
- GOP: costante, preferibile “closed GOP”
- Rate control: CBR o ABR stabile (evita picchi eccessivi)
- Codec: AAC-LC
- Sample rate: 48 kHz
- Bitrate: 128 kbps (stereo) o 96 kbps se vuoi risparmiare
- Canali: Stereo (2.0)
Nota: evitare formati audio non standard o sample rate inconsueti (es. 44.1 kHz) se il target include TV.
Parametri extra utili (se disponibili)
- B-frames: 2 (se l’encoder lo gestisce bene; in genere ok con Main)
- CABAC: abilitato (Main lo prevede)
- Scenecut: meglio evitare variabilità sul keyframe interval (GOP stabile)
4) Qualità e bitrate consigliati (ABR ladder)
Se pubblichi multi-qualità, una ladder semplice e robusta (valori indicativi, da adattare al contenuto):
| Risoluzione / FPS | Video bitrate | Audio | Note |
|---|---|---|---|
| 1920x1080 @ 25 fps | 3500 - 5500 kbps | AAC 128 kbps | Buona qualità per contenuti sport/news; verifica Level (spesso 4.0/4.1) |
| 1280x720 @ 50 fps | 2000 - 3500 kbps | AAC 128 kbps | Molto usato per “live” su TV; tipicamente Level 3.1 |
| 854x480 @ 25 fps | 900 - 1400 kbps | AAC 96 kbps | Fallback ottimo per rete mobile e dispositivi deboli |
| 640x360 @ 25 fps | 500 - 900 kbps | AAC 64 - 96 kbps | Ultimo fallback per condizioni difficili |
5) vMix: impostare Profile Main (passo per passo)
vMix - Streaming Settings (schema) 1) Apri Streaming Menu: Settings -> Streaming 2) Quality Scegli un preset (es. 720p) 3) Icona "ingranaggio" Apri Video/Encoder avanzato Sezione Video / Encoder Codec H.264 / AVC Profile Main (impostazione chiave) Level 3.1 (720p50) Keyframe interval 2 seconds GOP stabile per HLS/DASH Audio AAC-LC 48 kHz 128 kbps Schema vMix: vai nelle impostazioni Streaming, apri i dettagli video e imposta Profile = Main, Level coerente, e GOP stabile.Passi rapidi (vMix)
- Apri Streaming Settings.
- Scegli la qualità (es. 720p) e apri le opzioni avanzate (icona impostazioni).
- In Video imposta Profile: Main e Level coerente.
- Imposta Keyframe interval: 2s (GOP stabile).
- Audio: AAC-LC, 48 kHz, 128 kbps.
- Riavvia lo stream e verifica con
ffprobe(sezione 7).
6) OBS: impostare Profile Main (x264 e NVENC)
OBS Studio - Settings - Output (schema) 1) Settings -> Output Output Mode: Advanced 2) Tab Streaming Encoder: x264 oppure NVENC 3) Keyframe Interval 2 seconds (consigliato) 4) Profile Main (obiettivo) Esempio: x264 Rate Control CBR / ABR stabile Bitrate es. 2500 kbps Keyframe Interval 2 Profile main (minuscolo in OBS) Custom (opzionale) profile=main level=3.1 keyint=100 Schema OBS: imposta Output Mode su Advanced, poi in Streaming scegli encoder e imposta Profile = main e Keyframe Interval = 2.OBS (x264) - impostazioni consigliate
- Settings -> Output -> Output Mode: Advanced
- Tab Streaming
- Encoder: x264
- Rate Control: CBR (o ABR stabile)
- Keyframe Interval: 2
- Profile: main
profile=main
level=3.1
keyint=100
min-keyint=100
scenecut=0
Nota: keyint dipende dagli fps. Esempio: 50 fps -> 2s -> 100; 25 fps -> 2s -> 50.
OBS (NVENC) - impostazioni consigliate
- Encoder: NVIDIA NVENC H.264
- Profile: main
- Keyframe Interval: 2
- Rate Control: CBR (o VBR con limiti stretti)
7) Verifica rapida: controllare Profile/Level con ffprobe (Solo per tecnici - in caso aprire un ticket per verifica flusso)
Dopo aver cambiato le impostazioni, verifica con ffprobe (o mediainfo) che il video sia davvero Main. Esempio con URL HLS/DASH:
ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,profile,level,width,height,r_frame_rate \
-of default=noprint_wrappers=1 "URL_DEL_MANIFEST"
profile=Main(oppureprofile=main)level=31(che corrisponde a Level 3.1) oppure 40/41 per 4.0/4.1- Risoluzione e frame-rate coerenti con il preset scelto
8) Checklist prima di andare live
- H.264 Profile = Main
- Level coerente con risoluzione/fps
- Keyframe interval = 2s (GOP stabile)
- Audio AAC-LC, 48 kHz, 96-128 kbps
- Bitrate stabile (evita picchi anomali)
- Test su almeno 1 Samsung + 1 LG (se possibile) e 1 player desktop
9) Troubleshooting
Il TV non avvia lo stream o resta in buffering
- Verifica Profile/Level con
ffprobe. - Riduci la complessità: prova 720p25/50 con bitrate più basso per test.
- Assicurati che il GOP sia stabile (keyframe 2s) e non “balli”.
Audio ok ma video no (o viceversa)
- Audio: usa AAC-LC 48 kHz, evita formati alternativi.
- Video: conferma che non stai usando un profilo/level non supportato dal dispositivo.
La qualità è scarsa o piena di artefatti
- Aumenta bitrate (specie per sport/movimento).
- Se usi VBR, limita picchi eccessivi (meglio CBR su molti workflow TV).
- Controlla che la sorgente sia corretta (deinterlace se necessario).
