Fórumok
Vany egy gondom:
Van kb 15 db JPG kepem, ebbol szeretnek egy slideshow csinalni. (FONTOS, a videonak 25fps-nek KELL lennie, azaz az fps csokkento dolgok nem opciok.)
ffmpeg -framerate 25 -loop 1 -r 5 -i image-%01d.jpg -c:v libx264 -profile:v high -crf 20 -pix_fmt yuv420p output.mp4
Itt a gondom, az, hogy ez csinal egy olyan videot, ami 2 mp hosszu, es be vannak szorva a kepek beleje.
Magyarul, nem csinal a kepek kozott semmi delay-t.
Nekem minden 5 masodpercben kellene megjelenni egy kepnek.
Otlet?
Hozzászólások
Innen vettem, épp csak minimálisan kellett módosítani:
(az image melletti számformátum amit te megadtál, az nekem érthetetlen: %01d az én értelmezésem szerint egy számjegyes, amit kiegészítesz vezető nullával. WTF?)
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?
Ez sajna nem jo, mivel ez leveszi az fps-t kicsire. Mint irtam, a vegleges video fps-nek 25-nek kell lennie!!
Mint lathato itt:
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt470bg/unknown/unknown), 1920x1080 [SAR 1:1 DAR 16:9], 782 kb/s, 0.20 fps, 0.20 tbr, 16
Nem az a baj, hogy hiányzik a -i image* opció elől a -f image2 format-specifikáció? Az a furcsa, hogy a doksi szerint -framerate vagy -r kell a -i elé, és a kimeneti fájl elé is, ezért lett olyan a parancssor, amilyen.
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?
ok, most akkor mi lenne a Te verziod vegulis?
Szerintem az a verzió jó, kipróbáltam én is. (Hogy nálad mi történik, az más kérdés.)
VIDEÓ LINK
ffmpeg -framerate 1/5 -i img%03d.jpg -r 25 -c:v libx264 -pix_fmt yuv420p output.mp4
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 940x422 [SAR 1:1 DAR 470:211], 8 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
(A fenti videón is látszik, hogy 25 fps lett az elkészült videó az mpv szerint is.)
Nekem az is jo, ha barmilyen masik CLI tool kepes csinalni slideshow-t JPG-kbol, X felulet nincs a szerveren.
Mi az a (feltételezem műszaki?) indok, ami miatt állóképeknek másodpercenként 25x kell letárolva lenniük 5 másodpercen keresztül egy állóképvetítő slideshow-nál?
nem akarom nagyon reszletezni, de a lejatszo pufferel, emiatt mas fps-t nem eszik meg, csak 25-ot. Ha kevesebb jon be hozza, akkor behal.
1. csinálj egy videót alacsony frame rate-tel
2. alakítsd át a frame rate-et: https://trac.ffmpeg.org/wiki/ChangingFrameRate
ezt kiprobalom, de valszeg csak csokkenteni tudod hatekonyan, novelni nem (mintha dobalna el a frameket)
Hulye wörkaround de nem foglal azert talan annyi helyet: mi van akkor ha a 15 jpeg-ből csinálsz 1875 db jpeg-et? Akar ugy hogy symlinkelve. Ugyis jol be lesz tomoritve mert kicsik a difik :)
nagyon jo otlet, ki fogom probalni, egy kis bash magic
egyebkent ezesetben sajna a fading/in/out nem mukodik, kellene valami tool erre is, ami CLI
/sajna a tesztelt oggSlideshow hibas filet general, ellenoriztem/
Amikor a 15 jpegből csinálsz 1875 jpeget, használj ImageMagick-et (minden disztróban benne van, "convert" parancs). Azzal megadhatod, hogy az egy forrás jpeg fade-lve gyártódjon le az első pár és utolsó pár kimenet esetén. Ezzel akár cifrább átmeneteket is csinálhatsz, pl https://chris-lamb.co.uk/posts/generating-gradiented-fade-images-using-… (ez egyébként tud élből mpg-et generálni, de nem tudom, mennyire konfolható a kimenet formátuma, nem használtam még erre.)
Én egyébként mencoder-t használnék a képekből videó készítésére, tapasztalataim szerint sokkal, de sokkal gyorsabb, mint az ffmpeg, és sokszor jobb tömörítési arányt produkál (ez utóbbi mondjuk nagyban függ a képektől és megadott opcióktól is). http://www.mplayerhq.hu/DOCS/HTML/en/menc-feat-enc-images.html
az ffmpeg is tud crossdadinget alapbol (convert nelkul is), a problema a bemenet definialasa, ugyanis fileonkent kell ezt megtenned, ami problematikus
tul nagy parameterlistat kell generalni, elvetetettm
az mencoder mogott ha jol emlexem ffmpeg library (is) vannak
Ami nekem kellene, egy jo tool, ami kepes encoded mp4-et csinalni, crossfadinggel, kulonosebb megeroltetes nelkul, parametrizalhatoan
Látod, mencoder esetében nem. Ott megadhatod, milyen séma szerint vannak elnevezve a képek és kész. Vagy akár megadhatsz egy text fájlt is, amiben fel vannak sorolva a képek. De szerintem mivel a képkockákat úgyis bashből generálod, egyszerűbb a "frame(képkockasorszám).jpg" fájlnév sémás opciót használni. Valami ilyesmi:
Aztán a mencoder parancssorában nem kell felsorolni az összes frameX.jpg fájlt, magától megkeresi és szépen sorbarakja őket. De az ffmpeg is tud ilyent, és a convertnek is megadható fájllista text fájl.
És mégis. Nekem mondjuk általában arra van szükségem, hogy túl nagy felbontású videót leskálázzak 720p-re, de az eddig MINDIG nagyságrendekkel gyorsabb volt mencoder-rel, akármilyen bemenettel is próbáltam. És itt komoly különbségekről beszélek, pl a Minyonokkal az ffmpeg-et 2 és fél óra után lelőttem, mert még mindig futott, míg a mencoder ugyanezzel a fájllal kevesebb, mint fél óra alatt végzett.
convert. Mindezt tudja; azt nem állítom, hogy egyszerű lesz egyetlen paranssorban mindezt megadni, de lehetséges. Elég komolyan szkriptelhető, de rocketsience. Én tuti a bashes vonalon mennék tovább, hogy évekkel később is hozzá tudjak nyúlni.
Ennel egyszerubb megoldas nincs itt?
lehet, hogy rosszul értelmezem a kérdésed, de nekem ez működőnek látszik:
windows-on, ffmpeg version 6.0-full_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developers, built with gcc 12.2.0 (Rev10, Built by MSYS2 project)-vel próbáltam (a slideshow.bat-ban a % duplázva van, hogy az %-nak legyen értelmezve, de ez téged nem érint, mert Linux-on akarod használni): https://mab.to/dCKrSbANsqBHG
innen: https://shotstack.io/learn/use-ffmpeg-to-convert-images-to-video/
mit jelent az, hogy "mukodokepesnek latszik"?
lejatszotol fugg, mit latsz a kepen, vannak lejatszok amik problemamentesen lejatsszak a 2fps-es videokat is, de nekem ez nem OK...
most nézem, hogy ez "ugyanaz" mint amit Zahy javasolt, nálam a fenti verziójú ffmpeg ezt mondja az output.mp4-ről:
Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt470bg/unknown/unknown, progressive), 320x180 [SAR 1:1 DAR 16:9], 7 kb/s, 25 fps, 25 tbr, 12800 tbn (default)
és mással (pld. MediaTab, VLC) nézve is 25 fps-es a kimenet, ott van a letölthető output.mp4 is, nézd meg, hogy nálad mi a helyzet...
A framerate kapcsoló az inputfájl UTÁN kell. Ez nagyon fontos ffmpeg-nél, hogy a kapcsolók sorrendje számít, ha az inputfájl előtt van, akkor arra vonatkozik, ha az output előtt, akkor arra. Agyrém, tudom, néha engem is csúnyán megkever, meg frusztrál.
“A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)
igen, ez "be szokott" kavarni, de Zahy javaslata is pontosan "ugyanúgy" működik, mint amit "én" írtam, bár én a kérdező eredeti szkriptjéből meghagytam mindent, amit lehetett abból, amit ő írt, és, ha jól láttam, akkor Toma_ is ugyanígy járt el...
nem tudnák a dev-ek szétszedni --inputframerate és --outputframerate -re, és akkor párszáz-ezer ember nem szopna évente ezzel?
Amire te gondolsz az is ott van, csak -r 25 néven :-) Ami az inpufile mögött van, az a következp (input-vagy-output) fájlra vonatkozik. A doksi szerint a -i előtti -framerate 1/5 azért kell, hogy a képeket X ideig mutassa, az outputfile előtti -r 25 pedig a kimeneti framerate beállításához kell.
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?
Nos, valoban jonak tunik ez averzio:
ffmpeg -framerate 1/5 -i img%03d.jpg -r 25 -c:v libx264 -pix_fmt yuv420p output.mp4
Ezt tobben is javasoltak, koszonet nekik.
Ugy latszik, fontos a sorrend, elegge nagy szopodolog ez, a developerek egyertelmu handikeppje! Egyszeru parameter elnevezessel egyszerubb lenne.
Holnap kiprobalom a lejatszon, muxik e?