O kódování videa vůbec nevím, mám aplikaci napsanou v OpenGL a já ukládám snímky, které vygeneroval, do png obrázků. Rámečky z mé aplikace jsou na 7 FPS a snažím se z nich vytvořit video.

Za tímto účelem používám takto ffmpeg

ffmpeg -framerate 30 -i img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4

který byl převzat z tohoto webu , ale zajímalo by mě, jestli je možné mít video, které ukazuje animaci při 30 FPS?

Komentáře

Odpověď

K tomu samému používám níže uvedený kód.

ffmpeg -framerate 30 -i img%03d.png -c:v libx264 -pix_fmt yuv420p -crf 23 output.mp4 

Rozdělení příkazu:

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 

Tím se přečte vstup při 30 fps (-framerate 30 možnost) a kóduje jej pomocí libx264 kodeku s faktorem konstantní rychlosti 23 (-crf 23 možnost).

Odpověď

Je třeba vzít v úvahu dvě snímkové frekvence: vstup a výstup.

Ve výchozím nastavení je vstupní snímková frekvence 25 , a výstup bude používat stejný počet snímků za sekundu jako vstup, pokud to neurčíte jinak.

Stejný počet snímků za sekundu pro vstup a výstup

Pokud chcete zadat a výstup pro stejnou snímkovou frekvenci, pak stačí zadat vstupní snímkovou frekvenci. Tento příklad nastaví snímkovou frekvenci 30000/1001 (video NTSC):

ffmpeg -framerate 30000/1001 -i input output.mp4 
  • Alternativně v tomto příkladu můžete použít ntsc místo 30000/1001, ale nepoužívejte 29.97, protože to není přesné nebo správně. Viz další aliasy snímkové frekvence .

  • Protože výchozí vstupní snímková frekvence je 25, a pokud nastavte pouze výstupní snímkovou frekvenci, pak se snímky za účelem kompenzace vypustí nebo duplikují. Proto je v této situaci nastavena vstupní snímková frekvence.

Různá snímková frekvence pro vstup a výstup

Někdy můžete chtít, aby se vstupní kmitočet snímků a výstupní kmitočet snímků lišily. Můžete například chtít zadat snímky s určitou rychlostí a poté snímky duplikovat nebo zrušit, aby měl výstup jinou snímkovou frekvenci. Možná to budete chtít udělat kvůli problémům s kompatibilitou s kontejnerem výstupního formátu, přehrávačem nebo zařízením:

  • V tomto příkladu budou snímky duplikovány tak, aby jdou od 10 do 25. Výstup z konzoly vám řekne, zda jsou snímky vynechány nebo duplikovány.

  • demuxer obrazových souborů používá -framerate, zatímco výstupní snímková frekvence se nastavuje pomocí -r.

  • Možná budete muset přidat možnost -pix_fmt yuv420p do za určitých okolností, pokud znovu vydáváte video H.264 (výstup konzoly ffmpeg vás upozorní, pokud to budete potřebovat). Použije se schéma podvzorkování chroma, které je kompatibilní se všemi hráči.

Komentáře

  • ffmpeg verze 3.2.2 říká mi: Option framerate not found. 🙁
  • Ano, máš pravdu. Ale možnost -framerate neexistuje Už svůj komentář smažu, protože to opravdu nemá nic společného s převodem řady obrázků na video s určitou snímkovou rychlostí.
  • @erik -framerate neexistuje. ' Používá jej demuxery obrazu a rawvideo a některá vstupní zařízení, jako jsou x11grab a v4l2.
  • Kde je možnost -framerate dokumentováno? Přečetl jsem ' stránku man ffmpeg, ale nemohl jsem ' nenajdete ho. Možná nějaký ukazatel?
  • Dobře, našel jsem ho … FFMPEG-DEVICES(1).

Odpověď

ffmpeg -framerate 30 -i img%03d.png output.mp4 

bude v laté stačit Verze ffmpeg.

Komentáře

  • Nezapomeňte na -pix_fmt yuv420p, jinak můžete skončit se soubory že mnoho softwarových nástrojů se ' nelíbí: trac.ffmpeg.org/ticket/8856

Odpověď

Mluvíte o video interpolaci. Neexistuje způsob, jak by se ze 7 snímků za sekundu stalo 30 snímků za sekundu bez video interpolace … V zásadě chcete získat 30 snímků za sekundu od začátku, v procesu vytváření videí … Protože video interpolace bude vyžadovat spoustu zdrojů a času a může být naplněn artefakty.Slyšel jsem, že můžete udělat jeden snímek do krátkých filmů s Adobe, ale je tam spousta manuální práce …

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *