· kaynak dev.to (home feed)
Miraiclip, tarayıcı video editörleri için MIT lisanslı açık kaynak motor olarak yayımlandı
Miraiclip, tarayıcıda video editörleri geliştirmek için yeni bir MIT lisanslı motor: başlıksız, komut temelli bir çekirdek, WebCodecs tabanlı render ve önizlemeyle birebir eşleşen dışa aktarma sunuyor.

Miraiclip adlı yeni bir açık kaynak proje, MIT lisansıyla npm üzerinde yayımlandı ve tarayıcı tabanlı video düzenleme için eksik olan motor katmanı olarak konumlanıyor. Proje yazarının bir dev.to yazısına göre bu bilinçli olarak bir uygulama değil, bir kütüphane: timeline arayüzü yok, düğmeler yok. Çekirdek başlıksız (headless) yapıda; proje durumunu, mikro saniyelerle ölçülen bir timeline'ı ve eksiksiz bir komut geçmişini tutuyor, render ise ayrı bir katman olarak sunuluyor. Çekirdekte hiçbir UI bağımlılığı bulunmuyor, böylece ekipler arayüzlerini React, Vue, Svelte veya düz JavaScript ile inşa edebiliyor.
Komut temelli bir çekirdek
Yazar, tüm motorun üzerine kurulduğu bir tasarım kararını şöyle anlatıyor: durum değişiklikleri, durumu doğrudan değiştiren imperatif metotlar çağrılarak değil, açıklayıcı komutlar dispatch edilerek gerçekleşiyor. Her komut deterministik, bir şemaya göre doğrulanabilir, serileştirilebilir ve tersine çevrilebilir; ayrıca birkaç komut tek bir adımda geri alınabilen tek bir transaction içinde gruplanabiliyor.
Bu tercihten üç yetenek doğuyor. Geri alma ve yineleme tam olarak komutların tersine çevrilebilir olmasından ötürü çalışıyor ve yeniden oynatılabilir, incelenebilir bir geçmiş üretiyor. İşbirliği yönetilebilir hale geliyor; çünkü her durum değişikliği RFC 6902 uyumlu, ince taneli JSON patch'ler olarak yayılıyor ve yazar bunu çok oyunculu düzenlemenin temeli olarak sunuyor. Ve AI kontrolü neredeyse bedavaya geliyor: komut kataloğu JSON şemalarıyla yayımlandığı için bir LLM proje durumunu okuyup geçerli düzenleme dizileri üretebiliyor. Bir arayüzde tıklama yapan insan, bir düzenleme planlayan model ve bir işbirlikçinin değişikliklerini yeniden oynatan bir senkronizasyon katmanı hep aynı komut dilini konuşuyor.
Render ve dışa aktarma
Render paketi, bir WebCodecs çözme (decode) hattını PixiJS üzerine kurulu bir WebGL kompozitörüyle ve bir audio-master saatle eşleştiriyor. Dışa aktarma, önizlemeyle aynı kompozitörden geçtiği için çıktı şans eseri değil, tasarım gereği kullanıcıların gördüğüyle eşleşiyor. Çıktı biçimleri MP4 ve WebM; kodlanan video showSaveFilePicker aracılığıyla doğrudan bir dosyaya akıtabildiği için uzun projeler bellekte birikmiyor.
Üçüncü bir paket, Node'dan yönetilen headless Chrome'da aynı hattı çalıştırıyor ve çevrimdışı dışa aktarma için bir komut satırı aracıyla sunuluyor. Özellikler tarafında motor; kübik-bézier easing'li keyframe animasyonu, renk ayarı, blur ve chroma key gibi efektler, equal-power ses geçişli (crossfade) geçişler ve SRT, VTT ile ASR kelime düzeyi zaman damgalarını içe aktaran karaoke tarzı altyazılar sunuyor — tümü önizlemede, tarayıcı dışa aktarmasında ve sunucu dışa aktarmasında aynı şekilde render ediliyor.
Çalınmaya değer mühendislik dersleri
Yazı ayrıca tarayıcının yazarı çözmek zorunda bıraktığı üç sorunu belgeliyor. Birincisi, kare doğruluğu yalnızca zamanlanan değil, sunulan kareler üzerinden değerlendirilmeli: Miraiclip'in test fixture'ları her karenin indeksini rengi olarak kodluyor, böylece doğrulamalar gerçek canvas piksellerini okuyor; bu yaklaşım, callback temelli testlerin geçecegi seek ve oynatma hatalarını yakaladı.
İkincisi, dışa aktarma belleği timeline uzunluğundan bağımsız kalmalı. Yazar, bir saatlik sesi tek bir buffer'da karıştırmanın kabaca 1.4 GB'a mal olduğunu bildiriyor; bu yüzden motor sesi, kare yürüyüşüyle iç içe geçmiş sınırlı ardışık parçalar halinde karıştırıyor ve kodlanmış çıktıyı diske akıtıyor. Gerçekleştirilen bir gösterimde 86.400 kare ve tam bir saatlik sesi kapsayan bir saatlik dışa aktarma, en fazla 165 MB JS heap ile geliştirme dizüstü bilgisayarında 1.6x gerçek zaman hızında çalıştı.
Üçüncüsü, ikinci bir çözücüyle doğrulanamayan hiçbir şeye güvenilmiyor. Bir külliyat, dışa aktarılan her dosyayı ffmpeg ile yeniden çözüyor; her karenin zaman damgasını ve piksellerini, ses kazancını ve A/V senkronunu denetliyor; ölçülen sapma dosyanın iki ucunda da 0 ms idi.
Durum
Miraiclip henüz 1.0 öncesi. Yazar, çekirdek modelin biçim olarak stabil olduğunu söylüyor ama minor sürümler arasında API değişiklikleri beklenebileceği uyarısını yapıyor ve API sertleşmeden önce geri bildirim açıkça istiyor. Şu ana kadar üç paket mevcut: @miraiclip/core, @miraiclip/renderer ve @miraiclip/server-export. Render ve dışa aktarma, WebCodecs bağımlılığı nedeniyle Chromium ailesi tarayıcıları hedefliyor; çekirdek ise Node dahil JavaScript'in çalıştığı her yerde çalışıyor. Kod, comaniacs organizasyonu altında GitHub'da barındırılıyor; dokümantasyon ve canlı örneklerde gösterilen kod, çalışan kodun ta kendisi.
Neden önemli
Tarayıcı içi editör geliştiren ekipler, yeniden kullanılabilir bir motor olmadığı için tarihsel olarak aynı motor düzeyindeki donanımı — hassas oynatma, durumu asla bozmayan bir geri alma sistemi, önizlemeye sadık dışa aktarma — yeniden inşa etti. Bu sorunları bir kez çözen MIT lisanslı, çerçeveden bağımsız bir paket, çabayı yeniden ürün işine kaydırıyor. Komut artı şema tasarımı ayrıca AI destekli düzenleme için iyi zamanlanmış: bir model insanla aynı komutları dispatch edebiliyorsa tek bir motor ikisine de hizmet ediyor. Uyarılar gerçek, 1.0 öncesi API'lerden yalnızca Chromium'da çalışan rendere kadar; ama kodla birlikte belgelenen tarayıcı tarafı video mühendisliği, onu hiç benimsemeyecek ekipler için bile öğretici.
- #open-source
- #video-editing
- #webcodecs
- #javascript
- #browser