Hogyan készítsünk webböngésző-alapú videószerkesztőt?

Hogyan készítsünk webböngészőben futó, telepítés nélkül működő videó szerkesztő programot?

Ennek a cikknek az az érdekessége, hogy a végeredmény ténylegesen működik is, sőt már előfizetőik is vannak, tehát még fizetnek is érte a felhasználók (linkelt oldalon lehet élesben kipróbálni). Az a különlegessége a cikknek, hogy nagyjából leírják, hogyan alkották meg a böngészőben, telepítés nélkül futó videó szerkesztő szoftverüket.

Én is kipróbáltam és tényleg működik, nem kell hozzá semmit telepíteni.

Jó, egy hollywoodi filmet nem ezzel fognak megszerkeszteni, egyelőre elég alap funkciókat tud csak.

De a cikk érdekessége, hogy leírja a használt technológiákat, valamint hogy már működő böngésző-alapú videószerkesztőt is lehet írni. Egy idő után szerintem minden programból csak webes verziót fognak fejleszteni, mert minek asztali verzió, ha megy böngészőben is?

Hozzászólások

Szerkesztve: 2021. 05. 05., sze – 21:31

Tanulság, ha komoly teljesítményű szoftver kell:

  • Java kuka
  • node js kuka
  • Python kuka
  • C++ elővesz
  • A web frontend nagy teljesítményre szintén alkalmatlan, csak közelíteni tudja a végleges megjelenítendő videot

Szóval a tanulság: bár a webes technológia erre pont nem való, 10 fős csapat 2 évi munkájával cipőkanállal bele lehetett szuszakolni, erősen hunyorítva még jó is az eredmény.

Success?

Hát ha az embereknek nem kell desktop app, és nem érdekli őket az sem, hogy intim házi videóikat webre töltik fel, akkor végülis az...

Úgy is megfogalmazhatnánk amit írtál - amivel végül is alapjában én is egyetértek -, hogy ha alkalmatlan nyelven, alkalmatlan futtató környezetbe tudnak írni kellő elszántsággal és felkészülséggel ilyen szoftvert, akkor mindenki másnak, alkalmas nyelveken és alkalmas futtató környezetbe hogyan sikerül akkora sz@r, teljesítmény és hely zabáló, lassú, és temérdek hibával megáldott programot előállítani?

Úgy, hogy nem elég az, hogy kezdetben egy kompetens valaki meghozza a döntést a technológiáról, amiben az optimális megoldás elkészülhet. Hónapok és évek múlva is kell garantálni az eredeti fejlesztési irányelveket. Ehelyett rendszerint három dolog szokott történni.

  • A kompetens elemeket akadályozzák a technológiában teljességgel inkompetens projektmenedzserek, termékmenedzserek, termékgazdák. Stresszelik őket, szűk határidőket jelölnek meg a versenyre™, a konkurenciára™, költségoptimalizálásra, gazdasági okokra stb. hivatkozva. Méginkább szar a helyzet, ha ezt mikromenedzser stílusban művelik le. Itt a kompetens fejlesztőnek két választása van. Vagy felmond vagy behódol idealistáéknak és nem hagy időt az optimális megoldásnak.
  • A kompetens elemeket felerőltetik (értsd: előléptetik) egy olyan magasabb pozícióba, ahol már kevésbé kompetensek, a helyüket viszont a választott technológiában kevésbé kompetens elemek veszik át.
  • A kompetens elemeket nem hajlandóak inflációkövető piaci bérezéssel megfizetni, ott tartani, ezért előbb-utóbb felmondanak. A helyükre olcsóbb, silányabb, tehát inkompetens szürkeállomány érkezik.

Végső soron tehát igen nagy az esély rá, hogy inkompetens babzsákfejlesztők és stackoverflow-generációs koffein-kód biokonverterek folytatják a munkát, az eredeti koncepciót commitonként megcsúfolva és minden szart is behúzva, hogy végül akkora bloat legyen, mint egy eleve bloated framework-kel, webökrök által összetákolt JS-szutyok.

Mármint ami "nem igazán sikerült optimálisra" annak fényében, hogy valakik csináltak egy böngészőből használható videószerkesztőt?

Hát, mondjuk majdnem az összes rendszer amit az állam készíttetett/üzemeltet, az itthon fejleszett ügyviteli rendszerek nagy része, de hogy ismerteket is mondjak, pl. a Lightroom is ilyen sok más mellett.

Mármint ami "nem igazán sikerült optimálisra" annak fényében, hogy valakik csináltak egy böngészőből használható videószerkesztőt?

Hát, mondjuk majdnem az összes rendszer amit az állam készíttetett/üzemeltet, az itthon fejleszett ügyviteli rendszerek nagy része, de hogy ismerteket is mondjak, pl. a Lightroom is ilyen sok más mellett.

Kicsit szigorú vagy, egyelőre ezt a linkelt programot egyszerűbb videók szerkesztésére szánják, pl. social media videókhoz, vagy egyszerűbb videóvágási feladatokhoz meglévő videóknál. De nyilván egyre több funkciót tesznek bele, hogy minél többet tudjon.

Az viszont elvitathatatlan, hogy működik böngészőből, nem kell hozzá semmit telepíteni, nem kell frissíteni, platformfüggetlen (Windows, Mac, Linux, Android stb.), könnyen használható. A videó export a felhőben történik, tehát lassú gépen is gyors lesz a videó export. Vannak azért előnyei ennek a technológiának...

Én is elkezdtem írni egy hasonló választ, aztán elengedtem, mert igazából nem akarok vitatkozni róla.

De +1, borzasztóan számításigényes dolgokat is csinálnak Javában. Mondjuk ahol egy több ezer (!) szerverből álló HPC grid számolgat pénzügyi szimulációkat egy 500+ fejlesztő által megírt kódbázis alapján, ott nem a JVM lesz a szűk keresztmetszet. :)

Én még azt is elhiszem, hogy videorenderelő program írására nem jó választás a Java, de így kategorikusan kijelenteni, hogy abban nem lehet "komoly teljesítményt" csinálni, az elég furcsa, tekintve, hogy a fél világ Javában írja a mindenféle number crunching alkalmazásokat

Igen, hallottam ilyen projektekről.
Nézzük meg mondjuk a lineáris algebra csomagokat, mekkora részük van Javaban írva?
https://en.wikipedia.org/wiki/Comparison_of_linear_algebra_libraries
Kb 0% ?

off: amúgy engem nem különösebben érdekel ez a prog nyelv háború, csak nehogy valami kezdő komolyan vegye, hogy "mindegy, milyen nyelvet választasz, a for ciklus az for ciklus!"
bocs, de abszolút nem. Magam nagyon szeretem a c#-ot, de biztos, hogy csak akkor választanám egy projekthez, ha nem a teljesítményen, hanem a gyors, kényelmes, rugalmas fejlesztésen van a hangsúly.

Vannak a díszes paripák és az igáslovak. Mindkettőnek megvan a maga szerepe, én olyan területen mozgom általában, ahol inkább igáslóra van szükség.

Egyébként működik

A csiligépeden, egységsugarú vagdosásra. Esetleg.

https://www.veed.io/ -> Try sample

Vesd tekinteted a timeline-on lévő 3 felirat klipre (piros, sárga, kék). Próbáld meg őket átméretezni. Közben figyeld a CPU használatot. Elárulod nekem, hogy miért kell egy ötödik generációs gépen is 2 és fél magot kizabálni ahhoz (250% CPU), hogy egy fillrect-elt téglalap vízszintes mérete az egérkurzort követve módosuljon, majd ez alapján egy megjelenő felirat hosszát beállítsuk? Tényleg idáig süllyedtünk?

Felcsapnál esetleg egy network traffic monitort és megnéznéd, hogy a timeline csúszka adott időponthoz igazításakor és lejátszáskor is folyamatosan miért kell 100 Mbit/s fölött zabálni a hálózati forgalmat? Hogy ez mennyi mobilnetet fog felzabálni egy valódi, hosszabb film elkészítésekor? Hogy mi a faszom értelme van tapicskoló, touchscreen-idealista felületet csinálni hozzá, ha tableten és mobilon irreálisan magas lesz az adatforgalom-fogyasztása?

Ha olyan kibaszott hatékony a renderelés, mint ahogy áradoznak róla a blogban, akkor miért kell 200% CPU ahhoz is, hogy elindítsd a lejátszást és nézzed a videót?

Extrának még annyi, hogy ha túl sokat matatsz benne vagy túl sokáig van nyitva a "videószerkesztő", akkor képes szétcseszni annyira a Chromium renderingjét, hogy más oldalak kirajzolása is elkezd lagzani anélkül, hogy bármi magas CPU fogyasztás lenne adott pillanatban.

teljesen jól használható

Te vagy nagyon hülye vagy, vagy olyan jól takar a szemellenződ, hogy az atomvillanást is csak pislákoló félhomálynak látnád benne.

Jelen megoldás egy undorító, szélsőségesen idealista, ritka nagy bloated JS-szemétdomb, ami minden lehetséges módon pazarolja és pazaroltatja az erőforrást.
 

# cat /proc/cpuinfo 
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 92
model name	: Intel(R) Celeron(R) CPU J3455 @ 1.50GHz
stepping	: 9
microcode	: 0x3c
cpu MHz		: 1868.511
cache size	: 1024 KB
physical id	: 0
siblings	: 4
core id		: 0
cpu cores	: 4
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 21
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology tsc_reliable nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 ds_cpl vmx est tm2 ssse3 sdbg cx16 xtpr pdcm sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave rdrand lahf_lm 3dnowprefetch cpuid_fault cat_l2 ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust smep erms mpx rdt_a rdseed smap clflushopt intel_pt sha_ni xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts md_clear arch_capabilities
vmx flags	: vnmi preemption_timer posted_intr invvpid ept_x_only ept_ad ept_1gb flexpriority apicv tsc_offset vtpr mtf vapic ept vpid unrestricted_guest vapic_reg vid ple shadow_vmcs
bugs		: spectre_v1 spectre_v2
bogomips	: 2995.20
clflush size	: 64
cache_alignment	: 64
address sizes	: 39 bits physical, 48 bits virtual

Nekem elég régi gépem van (12 éves), de megy rajta gond nélkül (Ubuntu, Chromium).

Memória: 3,7 GiB

Processzor: Intel® Core™2 Duo CPU P8400 @ 2.26GHz × 2 

GPU: Mobile Intel® GM45 Express Chipset (CTG)

Sőt ilyen régi gépre pont jó, hogy a felhőben történik az export, mert különben egy örökkévalóság lenne kivárni a lokális gépen egy pár perces videónak is az exportját. De mivel az ő szerverükön történik az export, ezért egy ilyen régi gépen is gyorsan megvan.

Hát... a belinkelt blogposzt eleje félig-meddig kickstarteres "minden a piacon szar, jön a világmegváltás" jellegű. A második felében van esetleg valamennyire érdekes dolog.

Nem feltétlenül látom egyelőre át jelenleg, hogy ez miért igazán különleges.

Az, hogy már videót is lehet szerkeszteni a böngészőben, sőt nem csak játékból, hanem nekik konkrétan már annyi fizető ügyfelük van, hogy nyereségesen működnek (ezt egy másik blogbejegyzésben írták le). És hogy konkrétan ezt írták le, hogy egy ilyen megoldást hogyan fejlesztettek le.

Van valami technológiai megkötés, ami miatt a böngészőben futó szerkesztő nem képes a lokális videót szerkeszteni hanem mindenképpen fel kell azt tölteni?

Olyan is van (egy másik cég), ahol a lokális gépen lévő fájlokat szerkeszti, tehát nem tölti fel az ő szerverükre (ez is böngésző-alapú): https://clipchamp.com/

Ennek a hátránya, hogy a videó export is a lokális gépen fog futni, tehát ha lassú a géped, akkor sok idő lesz és a te géped erőforrásait használja az exporthoz.

Talán lehetne a kettőt kombinálni: a szerkesztés a lokális gépen lévő fájlokat használja, export során viszont feltölti a felhőbe és pillanatok alatt kész is utána az export. Sőt talán legjobb lenne, hogy választani lehet a kettő közül: lokális export vagy felhő-alapú.

Nem olvastam vegig a cikket, de  a video bongeszoben valo szerkesztesenek abszolut van letjogosultsaga, (mondjuk nem biztos hogy Magyarorszagon)

Nagy MAM (Media Asset Managment) szolgaltatoknal ez mar regota mukodik (Aspera, Cantemo, sot a Sonynak van). 

Gondold el anyag felhoben, szerkeszto, hirados stb mar helyszinen elkezd osszerakni egy Rough anyagot bongeszoben "nulla eroforassal", amit majd a studioban a vago XML-kent behuz a adot vagoprogramba, finomit es renderel. A fenti szolgaltatok kemenyen fizetosek, de mukodik. 

vati

Szerintem praktikusak az ilyen online programok:
- Nem kell letölteni
- Nem kell telepíteni
- Ha több géped van nem kell mindegyikre feltenni
- Használható telefonon, tableten is
- Egyszerű frissíteni (nem is neked kell)
- Ha valamire kell megoldás, csak ráguglizol, pl.: "image resize online"

Én ezt szoktam sűrűn használni: https://bulkresizephotos.com
Pillanatok alatt átméretezhetsz rengeteg képet. Ez sem tölti fel, hanem helyben végzi a műveletet.

De szoktam használni online fájl formátum konvertálókat is. 

És a fejlesztők szempontjából:

- ha mondjuk kikötik, hogy csak a legújabb Chromium-alapú böngészőkkel működik az alkalmazás, akkor máris nem kell 4-féle operációs rendszer 40-féle verzióján, azon belül 300-féle konfigurációján futó asztali alkalmazások hibabejelentéseivel foglalkoznia az ügyfélszolgálatnak (+ ezeket a kiadás előtt mind letesztelni, hogy működik-e), hanem drasztikusan lehet redukálni a tesztelendő környezetek számát

- akár naponta is beletehetnek új funkciókat vagy hibajavításokat, és minden felhasználó mindig a legújabb verziót használja anélkül, hogy azt telepíteniük kellene

- nem fog keringeni torrent- és egyéb letöltő oldalakon a szoftverük crackelt változata, tehát nem veszítenek pénzt az illegális letöltések miatt

Cserébe, ha a legújabb Chromium törik szarrá valamelyik alultesztelt oprendszeren (pl. Linuxon elég gyakran), akkor tehetetlen vagy és mehetsz kuncsorogni babzsákfejlesztőéknek, hogy ugyan szíveskedjenek már rendbehozni és figyelmesebben kerékújrafeltalálni, meg refaktorálgatni a fél kódbázist minden egyes főverzió között. Aztán majd ők eldöntik, hogy megjavítják-e vagy sem, te meg nyeld le és az ügyfeleiddel is nyelesd le.

Amit te itt előnynek próbálsz behazudni, az semmi más, mint a felelősségi kör arrogáns tologatása máshová (most épp a Google-hoz). Legyen mindenhol, csak ne nálad.

Ha mégis van, akkor az nyilván rögtön azt jelenti, hogy át kell állni egy bloated JS-frameworkre...

Mondom én, felelősség tologatása, semmi több. Nyugodtan használjon el sokkal több felesleges erőforrást a user, meg legyen kétszer-háromszor akkora erőforráséhségű egy alkalmazás, csakhogy az OS-specifikus bugokat ne neked kelljen kijavítani. Az árát pedig a felhasználók fizetik meg, energiapazarlással és az eszközeik gyorsabb elavulásával. Ráadásul annyiszorosan, ahány felhasználó van.