Minha correção da tela dividida passou em todos os testes. Corrigiu metade do bug.
Meu clipper com IA empilha duas pessoas numa tela dividida vertical. Quase um terço desses clipes duplicava parte da imagem. Minha 1ª correção cobriu só metade.
11 de outubro de 2026
Criado em 12 de outubro de 2026 · Atualizado em 12 de outubro de 2026
O Katto transforma vídeos longos em clipes verticais. Eu desenvolvo sozinho, em público. Em 10 de outubro corrigi um bug de geometria da tela dividida (split screen), testei, coloquei no ar e escrevi "corrigido" no changelog. Na mesma noite, vi que o bug continuava acontecendo. E nem corrigir duas vezes deixou a tela dividida boa.
Para que serve uma tela dividida
Um podcast ou uma entrevista costuma ser filmado em plano aberto: duas pessoas numa mesa, uma de cada lado de um quadro 16:9. Um short vertical é 9:16. Se você corta o centro, fica com a mesa e nenhum rosto. Se segue quem está falando, a outra pessoa some toda vez que responde.
Quando as duas pessoas estão afastadas o suficiente, o Katto faz outra coisa: recorta uma janela em volta de cada uma e empilha as duas, uma em cima da outra. Dois painéis com metade da altura, os dois rostos visíveis, o tempo todo. É a resposta padrão para o plano com duas pessoas, e é o que a página de reframe descreve.
O que estava dando errado
Cada painel tem uma largura, e o código limitava essa largura para que as duas janelas não se sobrepusessem. O limite era calculado a partir da distância entre as duas pessoas. Parece razoável, mas mede a coisa errada.
Um caso real. Uma fonte com 1920 pixels de largura, as duas pessoas a 1300 pixels uma da outra. O limite deu 1235, a largura do painel 1214, então o limite não entrou em ação. Depois cada janela era centralizada na sua pessoa e empurrada de volta para dentro da imagem onde passava da borda. A janela da esquerda andou 358 pixels para a direita, a da direita 236 pixels para a esquerda. Uma em direção à outra.
Duas janelas de 1214 pixels precisam de 2428 pixels para ficar lado a lado. A imagem tem 1920. Não importa o que você faça com elas, pelo menos 508 pixels acabam nos dois painéis ao mesmo tempo.
Na tela, isso vira uma faixa da mesma imagem na parte de baixo do painel de cima e na parte de cima do painel de baixo: um ombro duas vezes, meio rosto duas vezes, às vezes a pessoa inteira duas vezes.
A regra de onde eu deveria ter partido cabe numa linha: duas janelas de largura W só cabem lado a lado se 2W for no máximo a largura da imagem. A distância entre as pessoas não tem nada a ver com isso.
Com que frequência acontecia
Voltei aos clipes com tela dividida que o Katto já tinha entregado e li a sobreposição direto da geometria salva: a borda direita da primeira janela menos a borda esquerda da segunda.
31% deles tinham sobreposição. Entre esses:
| Sobreposição | Parcela | O que você vê |
|---|---|---|
| 300 px ou mais | 18% | uma pessoa ou um tronco duplicado |
| de 150 a 299 px | 15% | um pedaço do corpo na borda interna |
| de 60 a 149 px | 36% | uma faixa do fundo |
| menos de 60 px | 30% | nada que você notaria |
As porcentagens são arredondadas, por isso somam 99. Mais ou menos um terço invisível, um terço sutil, um terço claramente quebrado. O pior caso foram os 508 pixels acima.
Minha primeira contagem deu 23%, não 31%. Eu tinha calculado a sobreposição por meio de um campo que falta em alguns clipes mais antigos, e essas linhas foram puladas sem nenhum aviso. O número parecia plausível, e eu quase fiquei com ele.
A correção, e os testes em que ela passou
O novo limite é a regra de uma linha: cada painel com no máximo metade da imagem, e as duas janelas posicionadas de forma que não possam se cruzar. Ele só entra em ação quando o posicionamento original realmente se sobrepõe. Uma versão anterior recalculava a geometria em todos os casos e deslocava um punhado de clipes saudáveis em um ou dois pixels. Uma correção que mexe em clipes que estavam bons é um segundo bug.
Depois, as verificações. Reprocessei um lote de clipes salvos com a correção desligada e ligada: tudo o que não se sobrepunha saiu idêntico, e os únicos clipes que mudaram foram exatamente os que se sobrepunham. Depois, um job novo com um vídeo real: 12 clipes com tela dividida, o limite entrou em ação em 3, nenhum com sobreposição.
Coloquei no ar e registrei no changelog como corrigido.
Na mesma noite
Mais um vídeo de teste. Um clipe saiu com 44 pixels de sobreposição, com a correção ligada.
Eram duas funções. Uma cuida do caso clássico, duas pessoas frente a frente numa mesa, e dá um close para cada uma. A outra é o plano B geral, usado quando a primeira desiste: ela pega o rosto mais à esquerda e o mais à direita em cada quadro e divide a partir deles. As duas produzem um clipe com tela dividida com seu próprio par de posições de janela. As duas tinham o mesmo defeito, quase palavra por palavra. Eu tinha corrigido a primeira e nunca abri a segunda.
O chato é como as evidências pareciam convincentes. Minha medição e meu lote de teste misturavam os dois caminhos de código, e eu não fazia ideia. A primeira correção limpou o suficiente da amostra para o resultado parecer completo. Uma medição feita sobre resultados salvos conta sintomas. Ela não diz quantos lugares os produzem.
A segunda correção é a mesma regra na segunda função. Reprocessada no mesmo lote: mais quatro clipes corrigidos, sobreposições de 56, 124, 230 e 340 pixels todas zeradas, nada mais se mexeu. O de 56 pixels tinha passado intacto pela correção da manhã. Aí está o vazamento, pego no flagra.
Procurando um terceiro lugar
Antes de escrever "corrigido" pela segunda vez, procurei no código tudo o que define a posição de uma janela. Quatro lugares, não um. Dois são as funções acima, agora ambas corrigidas. O terceiro monta os painéis a partir de uma linha divisória que já encontrou e limita cada painel ao espaço do seu lado dessa linha, então, por construção, suas duas janelas não podem se cruzar. O quarto só repassa os números do terceiro.
Então, desta vez, a afirmação é mais restrita: nenhuma tela dividida renderizada desde 10 de outubro coloca a mesma parte da imagem nos dois painéis. Os clipes renderizados antes disso mantêm a geometria com que foram feitos.
O que ainda não está certo
Nenhuma imagem duplicada é um piso, não uma boa tela dividida. Três coisas que vejo hoje em vídeos reais:
Os painéis são largos demais para as pessoas dentro deles. Cada painel é dimensionado a partir da imagem, não da pessoa. Num plano aberto de estúdio, alguém pode ocupar um terço do seu painel, com o resto dado ao cenário atrás. Dois painéis meio vazios podem ficar piores do que um único plano bem enquadrado, e é por isso que ainda não liberei a tela dividida para mais tipos de plano. Apertar cada painel em volta da sua pessoa é o próximo trabalho.
Uma troca curta dentro de um clipe mais longo não é dividida. A decisão é tomada para o clipe inteiro. Se uma pessoa fala por quarenta segundos e a segunda entra por cinco, o clipe fica num único enquadramento e a resposta acontece fora da tela.
Alguns planos com duas pessoas nunca são reconhecidos como tal. O gatilho conta rostos. De perfil, à distância ou com pouca luz, o detector de rostos pode perder uma pessoa que o detector de corpos vê em todos os quadros, e o clipe volta para um único enquadramento.
Nenhum desses problemas duplica nada. Eles são a diferença entre uma tela dividida que não está quebrada e uma que é realmente boa, e prefiro dizer isso a deixar "corrigido" valer para as duas coisas.
O que eu levo disso
Quando uma correção funciona, procure os outros lugares que produzem a mesma saída. Não só o lugar onde você achou o bug: todo lugar que pode emitir o mesmo tipo de resultado. Aqui era uma busca por um nome de campo, e eu a fiz depois de colocar no ar, em vez de antes.
Um número agregado não consegue dizer que uma correção está completa. Ele caiu bastante, e uma queda grande é justamente o que faz você parar de procurar.
Uma métrica que pula linhas em silêncio é pior do que uma que falha. Um campo ausente transformou 31% em 23% sem um único aviso.
Parta da restrição, não de um substituto. O limite foi construído a partir da distância entre duas pessoas porque esse número estava à mão. O limite real era a largura da imagem, que também estava à mão.
A entrada do changelog (em inglês) dizia "corrigido" em 10 de outubro, algumas horas cedo demais. Agora ela conta o que aconteceu.
Artigos relacionados
Pronto para transformar seus vídeos em clipes virais?
O Katto corta, legenda e reenquadra automaticamente seus vídeos longos em conteúdo de formato curto.
Experimente o Katto grátis →