← Torna al blog
IngegneriaBuild in PublicVideo

La mia correzione dello schermo diviso ha superato tutti i test. Ha risolto metà del bug.

Il mio clipper IA impila due persone in uno schermo diviso verticale. Quasi un terzo delle clip duplicava parte dell'immagine. Il primo rimedio ne copriva metà.

11 ottobre 2026

La mia correzione dello schermo diviso ha superato tutti i test. Ha risolto metà del bug.

Creato il 12 ottobre 2026 · Aggiornato il 12 ottobre 2026

Katto trasforma i video lunghi in clip verticali. Lo sviluppo da solo, in pubblico. Il 10 ottobre ho corretto un bug di geometria dello schermo diviso (split screen), l'ho testato, l'ho messo in produzione e ho scritto "risolto" nel changelog. La sera stessa ho visto che il bug c'era ancora. E nemmeno correggerlo due volte è bastato a rendere buono lo schermo diviso.

A cosa serve uno schermo diviso

Un podcast o un'intervista di solito si gira in campo largo: due persone a un tavolo, una per lato in un'inquadratura 16:9. Uno short verticale è 9:16. Se tagli al centro, ottieni il tavolo e nessun volto. Se segui chi parla, l'altra persona sparisce ogni volta che risponde.

Quando le due persone sono abbastanza distanti, Katto fa un'altra cosa: ritaglia una finestra attorno a ciascuna e le impila, una sopra l'altra. Due pannelli a metà altezza, entrambi i volti visibili, sempre. È la risposta classica all'inquadratura con due persone, ed è quello che descrive la pagina del reframe.

Cosa non funzionava

Ogni pannello ha una larghezza, e il codice la limitava perché le due finestre non si sovrapponessero. Il limite veniva calcolato dalla distanza tra le due persone. Sembra ragionevole, ma misura la cosa sbagliata.

Ecco un caso reale. Una sorgente larga 1920 pixel, le due persone a 1300 pixel di distanza. Il limite risultava 1235, la larghezza del pannello 1214, quindi il limite non scattava. Poi ogni finestra veniva centrata sulla sua persona e riportata dentro l'immagine dove sforava dal bordo. La finestra di sinistra si spostava di 358 pixel verso destra, quella di destra di 236 pixel verso sinistra. Una verso l'altra.

Due finestre da 1214 pixel hanno bisogno di 2428 pixel per stare una accanto all'altra. L'immagine ne ha 1920. Comunque le si disponga, almeno 508 pixel finiscono in entrambi i pannelli contemporaneamente.

Un'inquadratura di 1920 pixel con due finestre da 1214 pixel: servono 2428 pixel, quindi almeno 508 pixel cadono in entrambe

Sullo schermo si vede una striscia della stessa immagine in fondo al pannello superiore e in cima a quello inferiore: una spalla due volte, mezzo volto due volte, a volte l'intera persona due volte.

La regola da cui sarei dovuto partire sta in una riga: due finestre di larghezza W stanno una accanto all'altra solo se 2W non supera la larghezza dell'immagine. La distanza tra le persone non c'entra niente.

Quanto spesso succedeva

Sono tornato sulle clip a schermo diviso che Katto aveva già consegnato e ho letto la sovrapposizione direttamente dalla geometria salvata: il bordo destro della prima finestra meno il bordo sinistro della seconda.

Il 31% si sovrapponeva. Tra queste:

SovrapposizioneQuotaCosa si vede
300 px o più18%una persona o un busto duplicato
da 150 a 299 px15%un pezzo di corpo sul bordo interno
da 60 a 149 px36%una striscia di sfondo
meno di 60 px30%niente che si noti

Le percentuali sono arrotondate, quindi la somma fa 99. Più o meno un terzo invisibile, un terzo discreto, un terzo palesemente rotto. Il caso peggiore erano i 508 pixel di cui sopra.

Il mio primo conteggio diceva 23%, non 31%. Avevo calcolato la sovrapposizione passando da un campo che manca su alcune clip più vecchie, e quelle righe erano state saltate senza alcun avviso. Il numero sembrava plausibile, e per poco non l'ho tenuto.

La correzione, e i test che ha superato

Il nuovo limite è la regola di una riga: ogni pannello al massimo metà dell'immagine, e le due finestre posizionate in modo da non potersi incrociare. Scatta solo quando il posizionamento originale si sovrappone davvero. Una versione precedente ricalcolava la geometria in ogni caso e spostava di un pixel o due una manciata di clip sane. Una correzione che tocca clip che andavano bene è un secondo bug.

Poi le verifiche. Ho rigenerato un lotto di clip salvate con la correzione disattivata e attivata: tutto ciò che non si sovrapponeva è uscito identico, e le uniche clip cambiate erano esattamente quelle che si sovrapponevano. Poi un nuovo job su un video reale: 12 clip a schermo diviso, il limite è scattato su 3, nessuna sovrapposizione.

L'ho messa in produzione, e nel changelog l'ho segnata come risolta.

La sera stessa

Ancora un video di prova. Una clip è uscita con 44 pixel di sovrapposizione, con la correzione attiva.

Le funzioni erano due. Una gestisce il caso classico, due persone una di fronte all'altra a un tavolo, e dà a ciascuna un primo piano. L'altra è il ripiego generale, usato quando la prima rinuncia: prende in ogni fotogramma il volto più a sinistra e quello più a destra e divide su quelli. Entrambe producono una clip a schermo diviso con la propria coppia di posizioni delle finestre. Entrambe avevano lo stesso difetto, quasi parola per parola. Avevo corretto la prima e non avevo mai aperto la seconda.

La cosa irritante è quanto sembrassero convincenti le prove. La mia misura e il mio lotto di test mescolavano i due percorsi di codice, e io non ne avevo idea. La prima correzione aveva ripulito abbastanza del campione da far sembrare il risultato completo. Una misura fatta sui risultati salvati conta i sintomi. Non ti dice quanti punti li producono.

La seconda correzione è la stessa regola nella seconda funzione. Rigenerata sullo stesso lotto: altre quattro clip corrette, sovrapposizioni di 56, 124, 230 e 340 pixel tutte portate a zero, nient'altro spostato. Quella da 56 pixel era passata indenne dalla correzione del mattino. Ecco la falla, colta sul fatto.

A caccia di un terzo punto

Prima di scrivere "risolto" una seconda volta, ho cercato nel codice tutto ciò che imposta la posizione di una finestra. Quattro punti, non uno. Due sono le funzioni di cui sopra, ora entrambe corrette. Il terzo costruisce i pannelli a partire da una linea di divisione che ha già trovato e limita ogni pannello allo spazio dal proprio lato di quella linea, quindi per costruzione le sue due finestre non possono incrociarsi. Il quarto si limita a passare avanti i numeri del terzo.

Quindi stavolta l'affermazione è più circoscritta: nessuno schermo diviso generato dal 10 ottobre mette la stessa parte dell'immagine in entrambi i pannelli. Le clip generate prima mantengono la geometria con cui sono state create.

Cosa ancora non va

Nessuna immagine duplicata è un livello minimo, non un buono schermo diviso. Tre cose che vedo oggi su video reali:

I pannelli sono troppo larghi per le persone che contengono. Ogni pannello è dimensionato sull'immagine, non sulla persona. In un'inquadratura larga da studio, qualcuno può occupare un terzo del proprio pannello e il resto va alla scenografia alle sue spalle. Due pannelli mezzi vuoti possono rendere peggio di una sola inquadratura ben composta, ed è il motivo per cui non ho ancora esteso lo schermo diviso ad altri tipi di inquadratura. Stringere ogni pannello attorno alla sua persona è il prossimo lavoro.

Un breve scambio dentro una clip più lunga non viene diviso. La decisione si prende per l'intera clip. Se una persona parla per quaranta secondi e la seconda interviene per cinque, la clip resta su un'unica inquadratura e la risposta avviene fuori campo.

Alcune inquadrature con due persone non vengono mai riconosciute come tali. Il criterio conta i volti. Di profilo, a distanza o con poca luce, il rilevatore di volti può perdere una persona che il rilevatore di corpi vede in ogni fotogramma, e la clip ripiega su un'unica inquadratura.

Nessuno di questi problemi duplica nulla. Sono la differenza tra uno schermo diviso che non è rotto e uno che è davvero buono, e preferisco dirlo piuttosto che lasciare che "risolto" valga per entrambi.

Cosa mi porto via

Quando una correzione funziona, cerca gli altri punti che producono lo stesso output. Non solo il punto in cui hai trovato il bug: ogni punto che può emettere lo stesso tipo di risultato. Qui bastava una ricerca su un nome di campo, e l'ho fatta dopo il rilascio invece che prima.

Un numero aggregato non può dirti che una correzione è completa. È sceso parecchio, e un grosso calo è proprio ciò che ti fa smettere di cercare.

Una metrica che salta righe in silenzio è peggio di una che fallisce. Un campo mancante ha trasformato il 31% in 23% senza un solo avviso.

Parti dal vincolo, non da un indicatore sostitutivo. Il limite era costruito sulla distanza tra due persone perché quel numero era a portata di mano. Il vero limite era la larghezza dell'immagine, anch'essa a portata di mano.

La voce del changelog (in inglese) diceva "risolto" il 10 ottobre, qualche ora troppo presto. Ora racconta cosa è successo.

Articoli correlati

Pronto a trasformare i tuoi video in clip virali?

Katto taglia, sottotitola e riformatta automaticamente i tuoi video lunghi in contenuti brevi.

Prova Katto gratis →