Moja poprawka podzielonego ekranu przeszła każdy test. Naprawiła pół błędu.
Mój AI clipper układa dwóch rozmówców w pionowym podzielonym ekranie. Prawie jedna trzecia klipów dublowała część obrazu. Pierwsza poprawka objęła połowę.
11 października 2026
Utworzono 12 października 2026 · Zaktualizowano 12 października 2026
Katto zamienia długie filmy w pionowe klipy. Buduję je sam i publicznie. 10 października naprawiłem błąd geometrii w podzielonym ekranie, przetestowałem poprawkę, wdrożyłem ją i wpisałem „naprawione” do changeloga. Tego samego wieczoru zauważyłem, że ten sam błąd nadal występuje. A nawet po drugiej poprawce podzielony ekran wciąż nie był dobry.
Do czego służy podzielony ekran
Podcast albo wywiad zwykle nagrywa się szeroko: dwie osoby przy stole, każda po jednej stronie kadru 16:9. Pionowy short ma format 9:16. Wytniesz środek, to zobaczysz stół i ani jednej twarzy. Będziesz podążać za osobą, która mówi, a druga zniknie za każdym razem, gdy odpowiada.
Kiedy dwie osoby siedzą wystarczająco daleko od siebie, Katto robi coś innego: wycina osobne okno wokół każdej z nich i układa je jedno nad drugim. Dwa panele o połowie wysokości, obie twarze widoczne przez cały czas. To standardowe rozwiązanie dla ujęcia z dwoma rozmówcami i właśnie to opisuje strona o reframingu.
Co poszło nie tak
Każdy panel ma szerokość, a kod ograniczał tę szerokość, żeby oba okna na siebie nie nachodziły. Limit wyliczano z odległości między dwiema osobami. Brzmi rozsądnie, tylko że mierzy nie to, co trzeba.
Prawdziwy przypadek: źródło o szerokości 1920 pikseli, dwie osoby oddalone od siebie o 1300 pikseli. Limit wyszedł 1235, szerokość panelu 1214, więc limit w ogóle nie zadziałał. Potem każde okno zostało wyśrodkowane na swojej osobie i tam, gdzie wychodziło poza kadr, zostało wepchnięte z powrotem do obrazu. Lewe okno przesunęło się o 358 pikseli w prawo, prawe o 236 pikseli w lewo. W swoją stronę.
Dwa okna po 1214 pikseli potrzebują 2428 pikseli, żeby zmieścić się obok siebie. Obraz ma 1920. Jakkolwiek je ułożysz, co najmniej 508 pikseli trafi jednocześnie do obu paneli.
Na ekranie wygląda to jak pasek tego samego obrazu na dole górnego panelu i na górze dolnego: dwa razy to samo ramię, dwa razy pół twarzy, czasem dwa razy cała osoba.
Zasada, od której powinienem był zacząć, mieści się w jednej linijce: dwa okna o szerokości W zmieszczą się obok siebie tylko wtedy, gdy 2W nie przekracza szerokości obrazu. Odległość między osobami nie ma tu nic do rzeczy.
Jak często to się zdarzało
Przejrzałem klipy z podzielonym ekranem, które Katto już dostarczyło, i odczytałem nakładanie się prosto z zapisanej geometrii: prawa krawędź pierwszego okna minus lewa krawędź drugiego.
31% z nich się nakładało. Wśród nich:
| Nakładanie | Udział | Co widać |
|---|---|---|
| 300 px lub więcej | 18% | zdublowana osoba albo tułów |
| 150 do 299 px | 15% | kawałek ciała przy wewnętrznej krawędzi |
| 60 do 149 px | 36% | pasek tła |
| poniżej 60 px | 30% | nic, co dałoby się zauważyć |
Procenty są zaokrąglone, więc sumują się do 99. Mniej więcej jedna trzecia niewidoczna, jedna trzecia subtelna, jedna trzecia ewidentnie zepsuta. Najgorszym przypadkiem było te 508 pikseli z przykładu wyżej.
Moje pierwsze liczenie dało 23%, a nie 31. Liczyłem nakładanie przez pole, którego brakuje w części starszych klipów, i te wiersze zostały pominięte bez słowa. Liczba wyglądała wiarygodnie, więc prawie ją zostawiłem.
Poprawka i testy, które przeszła
Nowy limit to ta zasada z jednej linijki: każdy panel ma najwyżej połowę szerokości obrazu, a oba okna są ustawione tak, żeby nie mogły na siebie wejść. Limit włącza się tylko wtedy, gdy pierwotne ułożenie faktycznie się nakłada. Wcześniejsza wersja przeliczała geometrię w każdym przypadku i przesuwała garść zdrowych klipów o piksel czy dwa. Poprawka, która rusza klipy, które były w porządku, to drugi błąd.
Potem sprawdzanie. Odtworzyłem partię zapisanych klipów z wyłączoną i włączoną poprawką: wszystko, co się nie nakładało, wyszło identycznie, a zmieniły się dokładnie te klipy, które się nakładały. Potem nowe zadanie na prawdziwym filmie: 12 klipów z podzielonym ekranem, limit zadziałał w 3, żaden się nie nakładał.
Wdrożyłem to i opisałem w changelogu jako naprawione.
Tego samego wieczoru
Jeszcze jeden film testowy. Jeden klip wyszedł z nakładaniem 44 pikseli, przy włączonej poprawce.
Były dwie funkcje. Jedna obsługuje klasyczny przypadek, dwie osoby siedzące naprzeciw siebie przy stole, i daje każdej zbliżenie. Druga to ogólne rozwiązanie awaryjne, używane, gdy pierwsza odmawia: bierze w każdej klatce twarz skrajnie lewą i skrajnie prawą i dzieli według nich. Obie tworzą klip z podzielonym ekranem z własną parą pozycji okien. Obie miały ten sam błąd, niemal słowo w słowo. Poprawiłem pierwszą, a drugiej nawet nie otworzyłem.
Najbardziej irytuje to, jak przekonujące wydawały się dowody. Mój pomiar i moja partia testowa mieszały obie ścieżki kodu, a ja nie miałem o tym pojęcia. Pierwsza poprawka oczyściła na tyle dużą część próbki, że wynik wyglądał na kompletny. Pomiar na zapisanych wynikach liczy objawy. Nie mówi, w ilu miejscach one powstają.
Druga poprawka to ta sama zasada w drugiej funkcji. Odtworzona na tej samej partii: cztery kolejne klipy poprawione, nakładania 56, 124, 230 i 340 pikseli wszystkie zeszły do zera, nic innego się nie ruszyło. Klip z 56 pikselami przeszedł przez poranną poprawkę nietknięty. To jest właśnie ten wyciek, złapany na gorącym uczynku.
Szukanie trzeciego miejsca
Zanim drugi raz napisałem „naprawione”, przeszukałem kod pod kątem wszystkiego, co ustawia pozycję okna. Cztery miejsca, nie jedno. Dwa to funkcje opisane wyżej, teraz obie poprawione. Trzecie buduje panele z linii podziału, którą już wcześniej znalazło, i ogranicza każdy panel do miejsca po jego stronie tej linii, więc jego dwa okna z samej konstrukcji nie mogą na siebie wejść. Czwarte tylko przekazuje dalej liczby z trzeciego.
Tym razem twierdzę więc coś węższego: żaden podzielony ekran wyrenderowany od 10 października nie pokazuje tego samego fragmentu obrazu w obu panelach. Klipy wyrenderowane wcześniej zachowują geometrię, z którą powstały.
Co wciąż jest nie tak
Brak zdublowanego obrazu to minimum, a nie dobry podzielony ekran. Trzy rzeczy widzę dziś na prawdziwych filmach:
Panele są za szerokie w stosunku do osób, które w nich są. Każdy panel jest wymiarowany według obrazu, nie według osoby. W szerokim ujęciu ze studia ktoś może zajmować jedną trzecią swojego panelu, a resztę wypełnia scenografia za nim. Dwa w połowie puste panele potrafią wyglądać gorzej niż jedno dobrze skadrowane ujęcie i to dlatego jeszcze nie włączyłem podzielonego ekranu dla większej liczby rodzajów ujęć. Zaciśnięcie każdego panelu wokół jego osoby to następne zadanie.
Krótka wymiana zdań w dłuższym klipie nie dostaje podziału. Decyzja zapada dla całego klipu. Jeśli jedna osoba mówi przez czterdzieści sekund, a druga wtrąca się na pięć, klip zostaje przy jednym kadrowaniu, a odpowiedź dzieje się poza ekranem.
Niektóre ujęcia z dwiema osobami nigdy nie zostają jako takie rozpoznane. Wyzwalacz liczy twarze. Z profilu, z daleka albo przy słabym świetle detektor twarzy może przeoczyć osobę, którą detektor sylwetki widzi w każdej klatce, i klip wraca do jednego kadrowania.
Żadna z tych rzeczy niczego nie dubluje. To różnica między podzielonym ekranem, który nie jest zepsuty, a takim, który jest naprawdę dobry, i wolę to powiedzieć wprost, niż pozwolić, żeby „naprawione” oznaczało jedno i drugie.
Co z tego wynoszę
Kiedy poprawka działa, szukaj innych miejsc, które dają ten sam wynik. Nie tylko miejsca, w którym znalazłeś błąd: każdego miejsca, które może wygenerować ten sam rodzaj wyniku. Tutaj wystarczyło jedno wyszukiwanie jednej nazwy pola, a ja zrobiłem je po wdrożeniu zamiast przed.
Zbiorcza liczba nie powie ci, że poprawka jest kompletna. Spadła bardzo mocno, a właśnie duży spadek sprawia, że przestajesz szukać.
Metryka, która po cichu pomija wiersze, jest gorsza od takiej, która się wywala. Brakujące pole zamieniło 31% w 23 bez jednego ostrzeżenia.
Zaczynaj od ograniczenia, a nie od zastępczej miary. Limit zbudowano z odległości między dwiema osobami, bo ta liczba była pod ręką. Prawdziwą granicą była szerokość obrazu, która też była pod ręką.
Wpis w changelogu (po angielsku) ogłosił „naprawione” 10 października, o kilka godzin za wcześnie. Teraz mówi, co się naprawdę stało.
Related articles
Gotowy, aby zamienić swoje filmy w wiralowe klipy?
Katto automatycznie wycina klipy, dodaje napisy i przekadrowuje Twoje długie filmy w treści krótkie.
Wypróbuj Katto za darmo →