Video keszitese szovegbol es masik videobol - ffmpeg

Udv!

 

Van egy 15 masodperces video, ami melle szeretnék egy kiegészítést tenni. Ezt úgy kell elképzelni, hogy mondjuk az eredeti videó 640x480 felbontású, a kívánt videó meg mondjuk 1024x480 felbontású lesz, és a jobb oldalon 10-15 szó megjelenik, és eltűnik. Vagy felvillan, elhalványul, vagy mozog, szóval valamilyen effekttel.

 

Az érdekelne a tapasztaltaktól, hogy milyen irányba induljak el?

 

Ami fontos, hogy scriptet szeretnék írni, jó lenne, ha ffmpeg-gel (és annak valamilyen kiegészítőjével), vagy valami hasonló, nem grafikus felületen használható programmal meg lehetne oldani.

 

Sajnos így google után sem lettem okosabb, de minden tippet, ötletet szívesen veszek.

 

 

 

Köszi.

Hozzászólások

Gondoltam, hogy nem pont erre vágysz, és a scriptet se találom egyelőre, szóval legalább nem fog téged összezavarni :) Ahogy lentebb látom, amúgy is sikerült már elindulnod; 15 mp nem sok, gyorsan renderel, és trial and errorral dolgoztam én is... azért még körbenézek majd a többi gépen, hátha meg lesz, bár lehet nem sokat ad majd ahhoz, amit eddig is sikerült összehoznod.

szerk: ha jól emlékszem, a scriptben próbáltam az ffmpeg opcióit logikus részekre (substringekre) vágni, és a végén összeilleszteni őket: olvashatóbb lesz a script, lehet neked is segítene egy hasonló megközelítés alkalmazása.

szerk2: megint csak, ha jól emlékszem nem is bashben írtam a cuccot. Talán Java-t használtam, aminek a kimenete egy "bash script" volt. Szóval nem muszáj bash-ben írni, választhatod a kedvenc program/scripting nyelvedet is az ffmpeg hívás összeállítására.

python-ban írom, ha már az egész körülötte lévő alkalmazás abban van, most már 1200 karakter a parancs, és sajnos ez csak nőni fog. Messze van még ugyan a limit, de már most látszik, hogy egy videón lehet 2 alkalommal is futtatni kell.

 

Amúgy most tértem át a -vf használatáról a -filter_complex használatára, de ez most még ugye csak ilyen tesztelgetős fázis.

Szerintem ehhez a munkához inkább VirtualDub-ot kellene használnod.
Ffmpeg-et mire kitanulod ilyen szinten, az azért időbe telik.

Ha jól látom, ez windowsra van, és grafikus. Nem írtam, de linuxra kell, és scriptelhetőnek kell lennie.

 

Na igen, eddigi ffmpeg ismereteim elég minimálisak voltak, nagyon sok opciós program, de lehet azért haladni. Mondjuk, 0 tapasztalatról ez a sor fél óra:

 

ffmpeg -i BELLA_CAnvas_3001.mp4 -vf "drawtext=text='MY TEXT STARTING HERE':x=(w-text_w)/2:y=w/50\*mod(t\,2):fontsize=48:fontcolor=white:box=1:boxcolor=yellow@0.4:enable='between(t,2.9,8)'" -c:a copy o.mp4

 

, ami csak egy szöveget mozgat egy egyenes mentén, de legalább lehet érteni.

Szerintem meg ehhez nem elég az ffmpeg, a legprofibb szinten sem. Arra elég lenne, hogy 1024×768-as fekete keretben benne a 640×480-as videó. Meg esetleg sima felirat. De az, hogy a szöveg jobb oldalon is legyen, meg halványuljon, mozogjon, effektezve legyen, az tudtommal nem oldható meg vele.

Erre a feladatra én Blendert használnék, biztos kéne hozzá tanulni, de az alkalmasabb erre a feladatra. Simán parancssori program nem alkalmas, pedig én odavagyok azért, majdnem minden alkalmazás terminálos, CLI/TUI nálam, de vannak műfajok, amikben a GUI-s megoldást nem lehet kiváltani, ilyen ez a videóvágás, effektezés is.

“I didn’t start using Linux so I could have friends.” (Luke Smith, 2019) 🐧

Ebben igazad van, de egyrészt frame-enként megrajzolni a szöveget, effekteket görény nagy meló, másrészt a GIMP se CLI progi, és ugyanott vagy, mintha az egészet Blenderben vagy KDEnlive-ban vagy hasonlóban csinálod.

“I didn’t start using Linux so I could have friends.” (Luke Smith, 2019) 🐧

Ha csak egy darabról lenne szó, valami GUI-s program nyilván gyorsabb, célravezetőbb lenne, de itt sajnos többről van szó mindig különböző paraméterekkel (más szöveg, más watermark-szerű képek), amiket >100 alkalommal lecserélni manuálisan nem kis munka.

 

No meg szerencsére a cél nem túl egzakt, közben is ki lehet alakítani a dolgokat. Amúgy a szövegek már mozognak, igaz, még csak egy egyenes mentén.

Ki lehet mazsolázni az opciókat, eleve, az ffmpeg kiadja a saját helpjét, ami elég bőséges,

de amit szeretnél, az is elég összetett feladat. 

Egy referencia projektet megcsinálsz Kdenlive-val, beállítgatod, hogy hogyan legyen a kis videó a keretben, hol legyen a szöveg, a szöveget pontosan hogyan mutogassa, hol legyen a vízjel, stb. Ezután renderelés helyett legenerálod az mlt scriptet, ami irányítja a renderelést. Ez alapján már le tudod gyártani a többi video fileodra is ezt az mlt scriptet, vagy egyszerűen cserélgeted benne a fileneveket, vagy megtanulod rendesen kezelni az MLT frameworkot (kicsit pilótavizsgás). Ezeket az mlt scripteket már le lehet futtatni, szépen le fogja renderelni neked a videóidat.

Köszi a Shotcut-ot. Nem ismertem eddig, pedig évek óta hobbi szinten videókat szerkesztgetek. Feltettem, nézegettem tutorialokat meg reviewkat, de bevallom, nem győzött meg. Neked miért jobb mint a Kdenlive? Érdekelne, mert hátha csak az első benyomásom volt hibás.

Szedd szét képekre mencoderrel, azokra pythonnal szkriptel írd rá, amit akarsz, aztán fűzd össze mencoderrel.

“Politikusok a döntésüket a háttérben dolgozó szakemberek javaslatai alapján hozzák meg." (Trey)

Egyrészt nem tűnt el...

Az Animate-re gondolsz? Nem próbáltam még, nagyon hasonlónak tűnik, de fogalmam sincs, hogy mennyiben különbözik a Flash( Professional IDE)-től.

...másrészt, hogyan gondolod?

A régi IDE nagy előnye volt a (vektorgrafikus) rajzolás képessége. Mivel a canvas és a videó mérete a topicban adott, így magára a scene-re rá lehet dobni egy VideoPlayert, ami a videót lejátssza (mondjuk ez nem létszükséglet, kóddal is fel lehet építeni). A szöveget meg lehet vagy előre meghatározott animációkkal, vagy programozott Animation / transparency / easing opciókkal megjeleníteni, eltűntetni. Egyedül csak a videóhoz tartozó szöveget magát kell dinamikusan beolvasni, meg esetleg az animáció típusát. Ha szinkronban kell tartani a videót és a szöveget, akkor a playheadUpdate eventre listeneléssel és a playheadTime property lekérdezésével azt is meg lehet valósítani. Aztán ha ez az egész kész, akkor lehet AVI-ba, vagy valamibe exportálni.

Persze javíts ki ha tévedek, évek óta nem dolgoztam Flash-sel, de ha a kezem ügyében lenne, én így állnék neki.

Szerk: látom már mi a probléma: az videó exportálás nem tudom pontosan hogy működne dinamikus content-tel.

Tudod hányszor kívántuk, hogy csak egy frissítés jöjjön már ki: ami örökre és végérvényesen eltávolítja? :->
Amikor bejelentették az életciklusa végét, még most is emlékszem, can't wait it érzésem volt.
Évekig könyörögtem, hogy legalább a vevők felé publikus toolokat implementáljuk már újra. Így végre muszáj lett.

Az évek során ,,okafogyottá" (fú de utálom ezt a szót) is vált a flash. Kb. minden lényeges feladatra amit ellátott, született már jobb megoldás. És hát ismerjük el, egy vulnerability kazal volt. És egy CPU-zabáló bloat.

Megértem, hogy szép emlékek fűznek hozzá, illetve akinek kalapácsa van...
de nézzünk szembe azért a kipusztulásának okaival.

ps.: a Kiki pays the rent nekem is hiányozni fog! ;-)

Hát, ha egy-két videóról lenne szó, akkor én az egyébként is használt DaVinci Resolve-ben csinálnám meg. Abban 15 perc lenne egy ilyen mutatvány kb. videónként. Cserébe érteni kell hozzá, nem igazán intuitív/tiviális egy nemlineáris videovágó szoftver. Azért ez, mert ezt ismerem, használom. Biztos van egyszerűbben használható, ami szintén tökéletes erre (fent javasoltak is párat).

Ha több darab kellene, akkor mondanám, hogy keressenek rá embert, nem vállalom, nincs nekem erre időm.

De itt elolvasva a kérdést, felkeltette az érdeklődésem, hogy valóban, meg lehet-e értelmesen csinálni CLI-ből ezt, repetitive. Rákerestem.
Google első oldalas találata nekem majdnem a kész verziót adta: Creating video containing animated text using FFMPEG alone Ezzel szerintem elindulhatsz, ha rászánnál néhány órát a kísérletezésre. Azért a text file időzített cserélhetése és az egész filter sor megfelelően időzítős felparaméterezése nem elsőre lesz meg szetinem... :-)