Nincsenek semmilyen ismereteim a videó kódolásáról, van egy alkalmazásom, amely OpenGL-be van írva, és I a létrehozott képkockákat png
képekbe mentem. Az alkalmazásom képkockái 7 FPS-esek, és ezekből próbálok videót készíteni.
Ebből a célból az ilyen ffmpeg-et használom
ffmpeg -framerate 30 -i img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4
amelyet erről a webhelyről készítettek , azonban kíváncsi voltam, van-e olyan videó, amely bemutatja az animációt 30 kép / mp sebességgel?
Megjegyzések
Válasz
Az alábbi kódot használom ugyanahhoz a művelethez.
ffmpeg -framerate 30 -i img%03d.png -c:v libx264 -pix_fmt yuv420p -crf 23 output.mp4
A parancs lebontása:
ffmpeg <- call ffmpeg -framerate 30 <- set the input framerate to 30 -i img%03d.png <- read PNG images with filename img001, img002, img003, etc.. img can be changed to another prefix %03d can be changed to %04d for 0001, %05d for 00001 formats, etc... -c:v libx264 <- Set the codec to libx264 -pix_fmt yuv420p <- Set the pixel format to planar YUV 4:2:0, 12bpp -crf 23 <- set the Constant Rate Factor to 23 (default value) -output.mp4 <- the output filename
Ez 30 fps sebességgel olvassa be a bemenetet (a -framerate 30
opció) és kódolja a libx264
kodek segítségével, a 23-as állandó sebességi tényezővel (a -crf 23
opció).
Válasz
Két képkockasebességet kell figyelembe venni: a bemenetet és a kimenetet.
Alapértelmezés szerint a bemeneti képkockasebesség 25 , és a kimenet ugyanazt a képkockasebességet fogja használni, mint a bemenet, hacsak másképp nem mondja meg.
Ugyanaz a képkockasebesség a bemenetnél és a kimenetnél
Ha meg szeretné adni és a kimenet ugyanazon képkockasebességgel rendelkezik, akkor csak adja meg a bemeneti képkockasebességet. Ez a példa 30000/1001 (NTSC videó) képkockasebességet állít be:
ffmpeg -framerate 30000/1001 -i input output.mp4
-
Alternatív megoldásként ebben a példában használhatja
ntsc
a30000/1001
helyett, de ne használja a29.97
-et, mert ez nem pontos vagy Helyes. Lásd a többi képsebesség-álnevet . -
Mivel az alapértelmezett bemeneti képkockasebesség 25, és ha csak egy kimeneti képkockasebességet állítson be, akkor a képkocka kompenzáció céljából eldobásra vagy duplikálásra kerül. Ezért van beállítva a bemeneti képkockasebesség ebben a helyzetben.
Különböző képkockasebesség és kimenet
Előfordulhat, hogy a bemeneti képkockasebesség és a kimeneti képkockasebesség eltér egymástól. Például érdemes beírni a képkockákat bizonyos sebességgel, majd megismételni vagy eldobni a képkockákat, hogy a kimenet eltérő képkockasebesség. Ezt a kimeneti formátumtároló, a lejátszó és / vagy az eszköz kompatibilitási problémái miatt érdemes megtennie:
-
Ebben a példában a keretek duplikálva lesznek 10-ről 25-re. A konzol kimenete megmondja, hogy a kereteket eldobják vagy megkettőzik-e.
-
A képfájl-demuxer a
-framerate
-et használja, míg a kimeneti képkockasebesség a-r
használatával állítható be. -
Lehet, hogy hozzá kell adnia a
-pix_fmt yuv420p
beállítást a bizonyos körülmények között, ha újból kinyomtatja a H.264-es videót (affmpeg
konzol kimenete figyelmeztet, ha szükséges). Ez egy chroma részmintavételi sémát fog használni, amely kompatibilis az összes játékossal.
Megjegyzések
- ffmpeg 3.2.2 verzió mondja:
Option framerate not found.
🙁 - Igen, igazad van. De ennek ellenére a
-framerate
opció nem létezik már törlöm a megjegyzésemet, mivel annak valójában semmi köze ahhoz, hogy egy képsorozatot videofájlokká alakítson át bizonyos képkockasebességgel. - @erik
-framerate
létezik. ' s, amelyeket a kép és a rawvideo demuxerek, valamint egyes beviteli eszközök, például az x11grab és a v4l2 használnak. - Hol van a dokumentálva? El ' olvastam a
man ffmpeg
oldalt, de nem tudtam ' nem találja. Van esetleg mutató? - Rendben, megtalálta …
FFMPEG-DEVICES(1)
.
Válasz
ffmpeg -framerate 30 -i img%03d.png output.mp4
a későn elegendő lesz Az ffmpeg t verziója.
Megjegyzések
- Ne felejtsd el a
-pix_fmt yuv420p
fájlt, különben fájlok juthatnak a fájlhoz hogy sok szoftvereszköz nem ' tetszik: trac.ffmpeg.org/ticket/8856
Válasz
Videó interpolációjáról beszél. Nincs mód arra, hogy a 7 kép / mp sebesség 30 képkocka / másodperc legyen videóinterpoláció nélkül … Alapvetően 30fps-t szeretne kapni a kezdetektől, a videók készítése során … Mivel a videóinterpoláció sok erőforrást és időt vesz igénybe, és ez leletekkel kell megtölteni.Úgy hallottam, hogy egyetlen felvételt készíthet rövid filmekké, Adobe-val, de sok kézi munka ott …
-framerate
paramétert a kívánt eredmények eléréséhez.