Birlikte İzle: İki Ayrı Şehirden Aynı Filmi İzlemek
Aynı odada olmayan biriyle film izlemek genelde şöyle geçer: “Üç deyince basıyoruz”, biriniz iki saniye önde, biri su almak için durduruyor ve gecenin geri kalanı “sen neredesin şimdi?” yazmakla geçiyor.
Birlikte İzle tam olarak bunu çözüyor, fazlasını değil. Biri filmi seçiyor, öbürü davet linkini açıyor ve o andan sonra ikiniz için tek bir oynat düğmesi var. Bir tarafta durdurunca öbür tarafta da duruyor. İleri sarınca ikiniz de aynı yere iniyorsunuz.

Neler izlenebiliyor
Üç yol var:
- Bir film dosyası: bilgisayarında ya da telefonunda ne varsa; bir MP4 ya da yıllardır bir köşede duran bir MKV.
- Bir YouTube videosu: linki yapıştırıyorsun, ikiniz de YouTube’un kendi oynatıcısıyla izliyorsunuz.
- Canlı yayın modu (web): ev sahibinin tarayıcısı görüntüyü doğrudan gönderiyor. Misafir dosyayı indiremediğinde yedek yol bu.
Film hiçbir sunucudan geçmiyor. İki cihaz WebRTC ile doğrudan bağlanıyor; benim tarafımdaki tek şey onları birbiriyle tanıştıran küçük bir sinyal servisi. Doğrudan bağlantı kurulamadığında (bazı mobil ağlar ve şirket güvenlik duvarları buna izin vermiyor) trafik Cloudflare’in TURN sunucuları üzerinden gidiyor. Bunların erişim bilgileri kısa ömürlü ve sunucu tarafından veriliyor; uygulamanın içinde gizli bir şey yok.
Misafir neden filmin tamamını indiriyor
İlk sürüm videoyu ev sahibinin tarayıcısından misafire yayınlıyordu, içinde film olan bir görüntülü görüşme gibi. Çalışıyordu ama görüntülü görüşme olduğu belli oluyordu: karanlık sahnelerde kare kare, hareketli sahnelerde bulanık ve o anki yükleme hızı ne kadarsa o kadar iyi.
Bu yüzden varsayılan yol artık farklı. Misafir orijinal dosyayı ev sahibinden 1 MiB’lık parçalarla, aynı anda dört parça (acil durumda altı) indiriyor ve kendi cihazında tam kaliteyle oynatıyor. Hepsinin inmesini beklemiyor: yeterince parça gelince oynatma başlıyor, sıradaki gereken parçalar öne alınıyor. Misafirin indirilmiş kısmı biterse ev sahibinin oynatıcısı da bekliyor, sonra ikisi birlikte devam ediyor.
Her filmin bir parmak izi var: boyutuyla birlikte ilk ve son 4 MiB’ının SHA-256’sı. Büyük bir dosyada bile hızlı hesaplanıyor ve daha önce indirilmiş bir film bir dahaki sefere tanınıyor. İndirilen filmler misafirin cihazında “Filmlerim” altında sonrası için kalıyor. Filmin adı da bilerek davet linkine konmuyor; bir sohbete yapıştırılan link, ne izlediğini kimseye söylemiyor.

İki oynatıcıyı aynı adımda tutmak
Senkron basit görünüyor, ta ki denemeye kadar. Ev sahibi oynatıcının durumunu saniyede dört kez gönderiyor. Misafir bir saniyeden fazla kayarsa (YouTube’da 0,3 saniye, çünkü YouTube’un atlamaları zaten geç oturuyor) doğrudan atlıyor. Daha küçük farklar, iki taraf yeniden buluşana kadar videoyu %10’a kadar hızlandırıp yavaşlatarak sessizce kapatılıyor; izlerken fark edilmiyor. En memnun olduğum kısım bu. En iyi senkron, kimsenin görmediği senkron.
Film sırasında konuşmak
Birlikte izlemenin anlamı birlikte tepki vermek, o yüzden:
- Yazılı sohbet filmin yanında.
- Sesli sohbet: sen açana kadar mikrofon kapalı. İstersen karşı taraf konuşurken filmin sesini kısan bir ayar var; bir yorumu duymak için durdurmak gerekmiyor.
- Kamera balonları: bilerek küçük (320×240, 15 fps), böylece bant genişliği için filmle yarışmıyorlar. Bir köşeye sürükleyebiliyorsun, dokununca büyüyorlar.
- Ortak altyazı: bir .srt ya da .vtt dosyasını bir kez yüklüyorsun, iki tarafa da gidiyor. Filmle uyuşmuyorsa birlikte kaydırıyorsunuz.

En uzun süren küçük şeyler
- Sesi çıkmayan MKV’ler. Chrome görüntüyü çözüyor ama MKV’lerde sık görülen AC3 ya da DTS sesi çözemiyor. Film tamamen sessiz oynuyor ve bir şeylerin bozuk olduğunu düşünüyorsun. Uygulama artık hiç ses çözülmediğini fark edip ne olduğunu ve MP4’e dönüştürmenin genelde çözdüğünü söylüyor.
- Uygulamayı açan davetler. Android’de davet linki tarayıcı yerine yüklü uygulamayı doğrudan odada açıyor.
- Arka plan. Telefonda bir saniyeliğine başka uygulamaya geçmek odayı düşürmemeli ya da indirmeyi durdurmamalı. Odalar arka planda açık kalıyor, film indirmeleri bir ön plan servisinde sürüyor.
- İlk mesajını kaçıran yavaş bağlantı. Kötü ağlarda kontrol kanalı, uygulama onu dinlemeye başlamadan açılabiliyordu ve ilk mesaj kayboluyordu. Küçük bir hata, çok kafa karıştırıcı belirtiler.
Web, Android ve iPhone aynı odada
Bir web uygulaması olarak başladı ve web sürümü hâlâ en hızlı yol: kurulum yok, dizüstünde çalışıyor. Sonra yerli uygulamalar geldi: Android’de Kotlin, Jetpack Compose, ExoPlayer ve libwebrtc, iPhone’da Swift. Web sürümüyle birebir aynı protokolü konuşuyorlar, dosya parçalarının bayt düzenine kadar; böylece dizüstündeki bir ev sahibi ile telefondaki bir misafir, hiçbiri farkına varmadan aynı odada buluşuyor. (iPhone uygulaması henüz App Store’da değil.)
Oda adları iki kelime ve bir sayıdan oluşuyor: bir sıfat, bir isim ve 42 gibi bir sayı. Link işe yaramadığında telefonda söylemesi kolay.
Hesap yok, reklam yok ve hiçbir film benim sunucumdan geçmiyor.
Birlikte İzle Google Play’de ve tarayıcıda da hemen kullanabilirsin. Linki uzaktaki birine gönder ve bir kere oynata bas.