Guida (software FREE): convertire MP4 “TV/HbbTV friendly” e creare renditions per playlist .smil (HandBrake / Shutter Encoder / FFmpeg)
Questa guida spiega passo per passo come usare software gratuiti per convertire MP4 in file compatibili con HbbTV e Smart TV (Samsung Tizen, LG webOS, ecc.) e preparare più renditions da usare in una playlist .smil (Wowza o sistemi simili).
Ottenere MP4 robusti e compatibili usando parametri “standard”: H.264 Main, level coerente, GOP stabile (keyframe regolari), e AAC-LC 48 kHz.
- Prima di iniziare (settaggi target)
- Opzione A (consigliata per iniziare): HandBrake
- Opzione B (ottima per batch): Shutter Encoder
- Opzione C (semplice “fix/remux”): Avidemux
- Opzione D (massimo controllo): FFmpeg
- Verificare il risultato (MediaInfo)
- Bitrate/qualità consigliati (ABR ladder)
- Playlist SMIL: come preparare i file + template
- Best practice HbbTV/Smart TV
- Troubleshooting
1) Prima di iniziare (settaggi target)
Per massima compatibilità HbbTV/TV, punta a:
- Contenitore: MP4
- Video: H.264 / AVC
- Profilo H.264: Main
- Pixel format: yuv420p (4:2:0) — fondamentale per TV
- Frame rate: uguale alla sorgente (tipico 25 o 50)
- Keyframe interval (GOP): 2 secondi (stabile)
- Audio: AAC-LC, 48 kHz, Stereo (2.0)
- Bitrate audio: 96–128 kbps
Keyframe ogni 2 secondi:
- 50 fps ? keyint 100
- 25 fps ? keyint 50
2) Opzione A: HandBrake (FREE, facilissimo)
Ideale per: conversioni singole rapide e MP4 puliti.
Output: MP4 (H.264 + AAC), ottimo come “sorgente” per renditions SMIL.
- Apri HandBrake ? Open Source ? seleziona il tuo MP4.
- Tab Summary:
- Format: MP4
- Attiva Web Optimized (fast start / moov atom all’inizio).
- Tab Video:
- Video Codec: H.264 (x264)
- Framerate (FPS): Same as source
- Constant Framerate (CFR) (consigliato per TV)
- Quality:
- Oppure usa Avg Bitrate (es. 2500–3500 kbps per 720p)
- Oppure RF se sai già che nel tuo workflow va bene
- Tab Audio:
- Codec: AAC
- Mixdown: Stereo
- Sample Rate: 48 kHz
- Bitrate: 128 kbps (96 kbps per fallback)
- Se devi creare più qualità: Tab Dimensions e imposta la risoluzione (720p/480p/360p).
- Salva con naming chiaro (es.
canale_720p50_main.mp4). - Start Encode. Ripeti per ogni rendition.
Non tutte le versioni/preset espongono in modo diretto “Main profile” e parametri avanzati (level/GOP). Se ti serve controllo rigoroso: usa Shutter Encoder o FFmpeg.
3) Opzione B: Shutter Encoder (FREE, ottimo per batch)
Ideale per: conversioni in batch e settaggi più espliciti rispetto a molte GUI.
- Apri Shutter Encoder - trascina dentro il file MP4.
- Choose function: seleziona H.264.
- Container: MP4.
- Video:
- Profile: Main (se disponibile)
- Pixel format: yuv420p
- Frame rate: coerente (25/50)
- GOP / Keyframes: 2 secondi (se l’opzione è presente)
- Bitrate: imposta quello della rendition (es. 3000 kbps per 720p)
- Audio:
- Codec: AAC
- 48 kHz, Stereo
- Bitrate: 128 kbps (o 96 kbps per fallback)
- Esporta 2–4 renditions: 1080p/720p/480p/360p.
- Start function.
4) Opzione C: Avidemux (FREE, semplice per “fix/remux”)
Ideale per: fix rapidi o re-encode basilari.
- Apri il file in Avidemux.
- Video Output: x264
- Audio Output: AAC
- Output Format: MP4 Muxer
- Se disponibile, imposta profilo Main e salva in MP4.
5) Opzione D: FFmpeg (FREE, massimo controllo)
Ideale per: controllo totale e automazioni.
ffmpeg -i input.mp4 \
-c:v libx264 -profile:v main -level:v 3.1 -pix_fmt yuv420p \
-r 50 -g 100 -keyint_min 100 -sc_threshold 0 \
-b:v 3000k -maxrate 3000k -bufsize 6000k \
-c:a aac -profile:a aac_low -ar 48000 -ac 2 -b:a 128k \
-movflags +faststart \
output_720p50_main.mp4
FFmpeg: esempio 480p25 (fallback)
ffmpeg -i input.mp4 \
-c:v libx264 -profile:v main -level:v 3.1 -pix_fmt yuv420p \
-r 25 -g 50 -keyint_min 50 -sc_threshold 0 \
-vf "scale=-2:480" \
-b:v 1100k -maxrate 1100k -bufsize 2200k \
-c:a aac -profile:a aac_low -ar 48000 -ac 2 -b:a 96k \
-movflags +faststart \
output_480p25_main.mp4
6) Verificare il risultato (MediaInfo)
Verifica ogni MP4 con MediaInfo (gratuito). Controlla:
- Format: AVC (H.264)
- Format profile: Main
- Format level: coerente (es. 3.1 per 720p50)
- Chroma: 4:2:0 (yuv420p)
- Audio: AAC LC, 48.0 kHz, 2ch
7) Bitrate/qualità consigliati (ABR ladder)
Ladder semplice e robusta (valori indicativi):
| Rendition | Risoluzione / FPS | Video bitrate | Audio | Note |
|---|---|---|---|---|
| Alta | 1080p25 | 4500 kbps | 128 kbps | Level 4.0/4.1 in base a fps/encoder |
| Main | 720p50 | 2500–3500 kbps | 128 kbps | Profilo molto usato in live su TV |
| Fallback | 480p25 | 900–1400 kbps | 96 kbps | Ottimo su reti deboli |
| Bassa | 360p25 | 600–900 kbps | 64–96 kbps | Ultimo fallback |
8) Playlist SMIL: preparare i file + template
Una volta generate le renditions, caricale sul server/origin e referenziale nel file .smil. Il parametro system-bitrate aiuta il player a scegliere la qualità corretta.
<?xml version="1.0" encoding="UTF-8"?>
<smil>
<head>
<meta name="title" content="mychannel"/>
</head>
<body>
<switch>
<video src="mp4:mychannel_1080p25_main.mp4" system-bitrate="4628000" />
<video src="mp4:mychannel_720p50_main.mp4" system-bitrate="3128000" />
<video src="mp4:mychannel_480p25_main.mp4" system-bitrate="1196000" />
<video src="mp4:mychannel_360p25_main.mp4" system-bitrate="796000" />
</switch>
</body>
</smil>
(video_kbps + audio_kbps) × 1000. Esempio: 3000 + 128 = 3128 kbps ?
3128000.9) Best practice HbbTV/Smart TV
- Parametri “standard”: Main, yuv420p, GOP stabile.
- Audio AAC-LC 48 kHz su tutte le qualità.
- Evita picchi di bitrate eccessivi.
- Testa almeno 1 Samsung e 1 LG prima di distribuire.
10) Troubleshooting
Il TV non parte / buffering infinito
- Controlla con MediaInfo che sia davvero Main (non Baseline/High).
- Verifica yuv420p (4:2:0).
- Riduci bitrate per isolare problemi di rete vs codec.
- Assicurati che i keyframe siano regolari (2s).
Audio ok ma video no (o viceversa)
- Audio: AAC-LC 48 kHz stereo.
- Video: profilo/level coerenti con risoluzione/fps.
Switch ABR instabile
- Keyframe allineati tra renditions (GOP identico).
- Frame rate coerente tra renditions quando possibile.
