मेरा split-screen fix हर टेस्ट में पास हुआ। पर bug आधा ही ठीक हुआ।
मेरा AI क्लिपर दो स्पीकर्स को वर्टिकल split screen में ऊपर-नीचे रखता है। करीब एक तिहाई क्लिप्स में तस्वीर दोहराई जा रही थी। पहला fix आधे पर ही चला।
11 अक्टूबर 2026
बनाया गया: 12 अक्तूबर 2026 · अद्यतन: 12 अक्तूबर 2026
Katto लंबे वीडियो को वर्टिकल क्लिप्स में बदलता है। मैं इसे अकेले, पब्लिक में बना रहा हूँ। 10 अक्तूबर को मैंने split screen का एक geometry bug ठीक किया, उसे टेस्ट किया, ship किया और changelog में "fixed" लिख दिया। उसी शाम मुझे वही bug फिर से होता दिखा। और दो बार ठीक करने के बाद भी split screen अच्छा नहीं बन पाया।
Split screen किस काम आता है
पॉडकास्ट या इंटरव्यू आम तौर पर wide शूट होते हैं: टेबल पर दो लोग, 16:9 फ्रेम के दोनों तरफ़ एक-एक। वर्टिकल short 9:16 का होता है। बीच का हिस्सा crop करें तो टेबल दिखती है, चेहरा किसी का नहीं। जो बोल रहा है उसे follow करें तो दूसरा इंसान हर बार जवाब देते वक़्त गायब हो जाता है।
जब दो लोग काफ़ी दूर बैठे हों, तो Katto कुछ और करता है: हर इंसान के आसपास एक window काटता है और दोनों को ऊपर-नीचे रख देता है। आधी ऊँचाई के दो panels, दोनों चेहरे हर वक़्त दिखते हुए। Two-speaker shot का यही standard जवाब है, और reframe पेज पर यही बताया गया है।
गड़बड़ क्या थी
हर panel की एक चौड़ाई होती है, और code उस चौड़ाई पर एक cap लगाता था ताकि दोनों windows overlap न करें। यह cap दोनों लोगों के बीच की दूरी से निकाला जाता था। सुनने में ठीक लगता है, पर यह गलत चीज़ नापता है।
एक असली उदाहरण लीजिए। 1920 pixel चौड़ा source, दोनों लोग 1300 pixel की दूरी पर। Cap आया 1235, panel की चौड़ाई 1214, तो cap लागू ही नहीं हुआ। फिर हर window को उसके इंसान पर center किया गया, और जहाँ वह किनारे से बाहर जा रही थी वहाँ उसे वापस तस्वीर के अंदर धकेला गया। बाईं window 358 pixel दाईं ओर खिसकी, दाईं window 236 pixel बाईं ओर। यानी एक-दूसरे की तरफ़।
1214 pixel की दो windows को अगल-बगल रखने के लिए 2428 pixel चाहिए। तस्वीर में हैं 1920। उन्हें आप कैसे भी रखें, कम से कम 508 pixel दोनों panels में एक साथ आएँगे।
स्क्रीन पर यह ऊपर वाले panel के नीचे और नीचे वाले panel के ऊपर एक ही तस्वीर की पट्टी बनकर दिखता है: एक कंधा दो बार, आधा चेहरा दो बार, कभी-कभी पूरा इंसान दो बार।
जिस नियम से मुझे शुरुआत करनी चाहिए थी, वह एक लाइन का है: W चौड़ाई की दो windows अगल-बगल तभी आ सकती हैं जब 2W तस्वीर की चौड़ाई से ज़्यादा न हो। लोगों के बीच की दूरी का इससे कोई लेना-देना नहीं है।
यह कितनी बार हुआ
मैंने Katto की पहले से डिलीवर हो चुकी split clips दोबारा देखीं और उनकी stored geometry से सीधे overlap पढ़ा: पहली window का दायाँ किनारा माइनस दूसरी window का बायाँ किनारा।
इनमें से 31 प्रतिशत clips overlap कर रही थीं। उनका हिसाब यह रहा:
| Overlap | हिस्सा | आपको क्या दिखता है |
|---|---|---|
| 300 px या ज़्यादा | 18% | कोई इंसान या धड़ दोहराया हुआ |
| 150 से 299 px | 15% | अंदर वाले किनारे पर शरीर का एक टुकड़ा |
| 60 से 149 px | 36% | बैकग्राउंड की एक पट्टी |
| 60 px से कम | 30% | ऐसा कुछ नहीं जो नज़र में आए |
प्रतिशत round किए गए हैं, इसलिए जोड़ 99 आता है। मोटे तौर पर एक तिहाई दिखता ही नहीं, एक तिहाई हल्का है, और एक तिहाई साफ़-साफ़ टूटा हुआ। सबसे बुरा केस ऊपर वाला 508 pixel का था।
मेरी पहली गिनती में 31 नहीं, 23 प्रतिशत आया था। मैंने overlap एक ऐसे field से निकाला था जो कुछ पुरानी clips में है ही नहीं, और वे rows बिना कुछ बताए छूट गईं। नंबर भरोसेमंद लग रहा था, तो मैं उसे लगभग रख ही चुका था।
Fix, और वे टेस्ट जिनमें वह पास हुआ
नया cap वही एक लाइन वाला नियम है: हर panel ज़्यादा से ज़्यादा तस्वीर का आधा, और दोनों windows ऐसे रखी जाएँ कि एक-दूसरे को पार न कर सकें। यह तभी लागू होता है जब असली placement सच में overlap कर रहा हो। एक पुराना version हर केस में geometry दोबारा calculate करता था और कुछ ठीक-ठाक clips को एक-दो pixel खिसका देता था। जो fix ठीक चल रही clips को छेड़े, वह अपने आप में दूसरा bug है।
फिर checks की बारी आई। मैंने stored clips का एक batch fix बंद और चालू करके दोबारा चलाया: जो clips overlap नहीं कर रही थीं वे बिल्कुल वैसी ही निकलीं, और बदलीं सिर्फ़ वही clips जो overlap कर रही थीं। फिर एक असली वीडियो पर नया job: 12 split clips, 3 पर cap लागू हुआ, overlap किसी में नहीं।
मैंने इसे ship किया, और changelog में fixed लिख दिया।
उसी शाम
एक और टेस्ट वीडियो। Fix चालू होने के बावजूद एक clip 44 pixel के overlap के साथ निकली।
दो functions थे। एक classic केस संभालता है, यानी टेबल पर आमने-सामने बैठे दो लोग, और हर एक को close-up देता है। दूसरा general fallback है, जो तब चलता है जब पहला मना कर दे: यह हर frame में सबसे बाएँ और सबसे दाएँ चेहरे को लेकर उन्हीं के आधार पर split करता है। दोनों अपनी-अपनी window positions की जोड़ी से split-screen clip बनाते हैं। दोनों में लगभग शब्दशः एक ही खामी थी। मैंने पहला ठीक किया और दूसरा कभी खोला ही नहीं।
चिढ़ इस बात की है कि सबूत कितना पक्का लग रहा था। मेरे measurement और test batch में दोनों code paths मिले हुए थे, और मुझे इसका बिल्कुल अंदाज़ा नहीं था। पहले fix ने sample को इतना साफ़ कर दिया कि नतीजा पूरा लगने लगा। Stored results पर लिया गया measurement लक्षण गिनता है। वह यह नहीं बताता कि उन्हें पैदा करने वाली जगहें कितनी हैं।
दूसरा fix वही नियम दूसरे function में लगाना था। उसी batch पर दोबारा चलाया: चार और clips ठीक हुईं, 56, 124, 230 और 340 pixel के overlaps सब शून्य पर आ गए, और बाकी कुछ भी नहीं हिला। 56 pixel वाली clip सुबह के fix से बिना छुए निकल गई थी। यही था leak, रंगे हाथों पकड़ा गया।
तीसरी जगह की जाँच
दूसरी बार "fixed" लिखने से पहले मैंने code में हर वह जगह खोजी जो window position सेट करती है। एक नहीं, चार जगहें निकलीं। दो तो ऊपर वाले functions हैं, जो अब दोनों ठीक हो चुके हैं। तीसरी जगह पहले से मिली एक dividing line से panels बनाती है और हर panel को उस line के अपनी तरफ़ वाली जगह तक सीमित रखती है, इसलिए उसकी दोनों windows बनावट से ही एक-दूसरे को पार नहीं कर सकतीं। चौथी जगह बस तीसरी के नंबर आगे भेजती है।
इसलिए इस बार दावा थोड़ा सीमित है: 10 अक्तूबर के बाद render हुआ कोई भी split screen तस्वीर का एक ही हिस्सा दोनों panels में नहीं डालता। उससे पहले render हुई clips में वही geometry रहेगी जिसके साथ वे बनी थीं।
अभी भी क्या ठीक नहीं है
तस्वीर का दोहराव न होना बस न्यूनतम शर्त है, अच्छा split screen नहीं। आज असली वीडियो पर मुझे तीन चीज़ें दिखती हैं:
Panels उनमें मौजूद लोगों के हिसाब से बहुत चौड़े हैं। हर panel का साइज़ तस्वीर से तय होता है, इंसान से नहीं। एक wide studio shot में कोई इंसान अपने panel का सिर्फ़ एक तिहाई भर सकता है और बाकी जगह पीछे के set को मिल जाती है। आधे खाली दो panels एक अच्छे से frame किए गए shot से बुरे लग सकते हैं, और इसी वजह से मैंने split को अभी और तरह के shots के लिए नहीं खोला है। हर panel को उसके इंसान के आसपास कसना अगला काम है।
लंबी clip के अंदर छोटी-सी बातचीत split नहीं होती। फ़ैसला पूरी clip के लिए एक साथ होता है। अगर एक इंसान 40 सेकंड बोले और दूसरा 5 सेकंड के लिए बीच में बोले, तो clip एक ही framing पर रहती है और जवाब स्क्रीन के बाहर होता है।
कुछ two-person shots को कभी two-person shot के रूप में पहचाना ही नहीं जाता। Trigger चेहरे गिनता है। Profile में, दूरी पर या कम रोशनी में face detector उस इंसान को miss कर सकता है जिसे body detector हर frame में देखता है, और clip एक single framing पर लौट जाती है।
इनमें से कोई भी चीज़ कुछ दोहराती नहीं। ये उस split screen के बीच का फ़र्क हैं जो टूटा नहीं है और उस split screen के बीच जो सच में अच्छा है, और मैं "fixed" शब्द को दोनों का मतलब बनने देने के बजाय यह साफ़-साफ़ कहना पसंद करूँगा।
इससे मैं क्या सीख रहा हूँ
जब कोई fix काम करे, तो वे दूसरी जगहें खोजिए जो वही output बनाती हैं। सिर्फ़ वह जगह नहीं जहाँ bug मिला, बल्कि हर वह जगह जो उसी तरह का नतीजा दे सकती है। यहाँ यह एक field name की एक search भर थी, और मैंने उसे ship करने से पहले नहीं, बाद में चलाया।
एक aggregate नंबर आपको नहीं बता सकता कि fix पूरा हुआ या नहीं। नंबर बहुत नीचे आया, और बड़ी गिरावट ही वह चीज़ है जो आपको खोजना बंद करवा देती है।
जो metric चुपचाप rows छोड़ दे, वह fail होने वाले metric से भी बुरा है। एक गायब field ने बिना एक भी warning के 31 प्रतिशत को 23 बना दिया।
Proxy से नहीं, constraint से शुरू कीजिए। Cap दो लोगों के बीच की दूरी से इसलिए बना क्योंकि वह नंबर हाथ में था। असली सीमा तस्वीर की चौड़ाई थी, और वह भी हाथ में ही थी।
Changelog entry (अंग्रेज़ी में) ने 10 अक्तूबर को "fixed" कह दिया था, कुछ घंटे जल्दी। अब उसमें लिखा है कि असल में क्या हुआ।
संबंधित लेख
अपने वीडियो को वायरल क्लिप में बदलने के लिए तैयार हैं?
Katto आपके लंबे वीडियो को अपने आप काटता, कैप्शन जोड़ता और रीफ़्रेम करके शॉर्ट-फ़ॉर्म कंटेंट बनाता है।
Katto मुफ़्त आज़माएँ →