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?
- 365 megtekintés
Hozzászólások
Innen vettem, épp csak minimálisan kellett módosítani:
ffmpeg -framerate 1/5 -i image%03d.png -c:v libx264 -r 25 -pix_fmt yuv420p out.mp4
(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?)
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
ok, most akkor mi lenne a Te verziod vegulis?
- A hozzászóláshoz be kell jelentkezni
Szerintem az a verzió jó, kipróbáltam én is. (Hogy nálad mi történik, az más kérdés.)
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.)
- A hozzászóláshoz be kell jelentkezni
Nekem az is jo, ha barmilyen masik CLI tool kepes csinalni slideshow-t JPG-kbol, X felulet nincs a szerveren.
- A hozzászóláshoz be kell jelentkezni
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?
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
1. csinálj egy videót alacsony frame rate-tel
2. alakítsd át a frame rate-et: https://trac.ffmpeg.org/wiki/ChangingFrameRate
- A hozzászóláshoz be kell jelentkezni
ezt kiprobalom, de valszeg csak csokkenteni tudod hatekonyan, novelni nem (mintha dobalna el a frameket)
- A hozzászóláshoz be kell jelentkezni
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 :)
- A hozzászóláshoz be kell jelentkezni
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/
- A hozzászóláshoz be kell jelentkezni
egyebkent ezesetben sajna a fading/in/out nem mukodik, kellene valami tool erre is, ami CLI
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
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
az ffmpeg is tud crossdadinget alapbol, a problema a bemenet definialasa, ugyanis fileonkent kell ezt megtenned, ami problematikus tul nagy parameterlistat kell generalni, elvetetettm
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:
convert slideX.jpg -fill black -colorize 100% frame$[$Y].jpg convert slideX.jpg -fill black -colorize 75% frame$[$Y+1].jpg convert slideX.jpg -fill black -colorize 50% frame$[$Y+2].jpg convert slideX.jpg -fill black -colorize 25% frame$[$Y+3].jpg ln -s slideX.jpg frame$[$Y+4].jpg ... ln -s slideX.jpg frame$[$Y+$n].jpg convert slideX.jpg -fill black -colorize 25% frame$[$Y+$n+1].jpg convert slideX.jpg -fill black -colorize 50% frame$[$Y+$n+2].jpg convert slideX.jpg -fill black -colorize 75% frame$[$Y+$n+3].jpg convert slideX.jpg -fill black -colorize 100% frame$[$Y+$n+4].jpg X = $[$X + 1] Y = $[$Y + $n + 4]
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.
az mencoder mogott ha jol emlexem ffmpeg library vannak
É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.
Ami nekem kellene, egy jo tool, ami kepes encoded mp4-et csinalni, crossfadinggel, kulonosebb megeroltetes nelkul, parametrizalhatoan
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.
- A hozzászóláshoz be kell jelentkezni
Ennel egyszerubb megoldas nincs itt?
- A hozzászóláshoz be kell jelentkezni
lehet, hogy rosszul értelmezem a kérdésed, de nekem ez működőnek látszik:
ffmpeg -framerate 1/5 -i image-%01d.jpg -c:v libx264 -profile:v high -crf 20 -pix_fmt yuv420p -r 25 output.mp4
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/
- A hozzászóláshoz be kell jelentkezni
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...
- A hozzászóláshoz be kell jelentkezni
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 hozzászóláshoz be kell jelentkezni
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.
“The world runs on Excel spreadsheets.” (Dylan Beattie)
- A hozzászóláshoz be kell jelentkezni
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...
- A hozzászóláshoz be kell jelentkezni
nem tudnák a dev-ek szétszedni --inputframerate és --outputframerate -re, és akkor párszáz-ezer ember nem szopna évente ezzel?
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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?
- A hozzászóláshoz be kell jelentkezni