Ik heb geen enkele kennis van videocodering, ik heb een applicatie geschreven in OpenGL en ik bewaar de gegenereerde frames in png afbeeldingen. De frames van mijn app zijn 7 FPS en ik probeer daar een video van te maken.

Voor dat doel gebruik ik ffmpeg op deze manier

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

die van deze site is gehaald, maar ik vroeg me af of het mogelijk is om een video te maken die de animatie laat zien bij 30 FPS?

Reacties

Antwoord

Ik “gebruik de onderstaande code om hetzelfde te doen.

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

De opdracht opsplitsen:

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 

Dit leest de invoer met 30 fps (de -framerate 30 optie) en codeert deze met de libx264 codec met constante-snelheidsfactor van 23 (de -crf 23 optie).

Answer

Er zijn twee framesnelheden om te overwegen: de invoer en de uitvoer.

Standaard is de invoerframesnelheid 25 , en de uitvoer zal dezelfde framesnelheid gebruiken als de invoer, tenzij je het anders vertelt.

Dezelfde framesnelheid voor invoer en uitvoer

Als je en output om dezelfde frame rate te hebben, geef dan gewoon de input frame rate op. In dit voorbeeld wordt een framesnelheid van 30000/1001 (NTSC-video) ingesteld:

ffmpeg -framerate 30000/1001 -i input output.mp4 
  • Als alternatief kunt u in dit voorbeeld ntsc in plaats van 30000/1001, maar gebruik 29.97 niet omdat dat niet juist is of correct. Zie andere frame rate aliassen .

  • Omdat de standaard input frame rate 25 is, en als je stel alleen een outputframesnelheid in, dan worden frames verwijderd of gedupliceerd om dit te compenseren. Daarom wordt de inputframesnelheid in deze situatie ingesteld.

Verschillende framesnelheid voor invoer en uitvoer

Soms wilt u misschien dat de invoerframesnelheid en de uitvoerframesnelheid verschillen. U wilt bijvoorbeeld de frames met een bepaalde snelheid invoeren en vervolgens frames dupliceren of verwijderen, zodat de uitvoer een verschillende framesnelheid. Misschien wilt u dit doen vanwege compatibiliteitsproblemen met uw uitvoerformaatcontainer, uw speler en / of uw apparaat:

  • In dit voorbeeld zullen frames worden gedupliceerd om van 10 naar 25 te gaan. De console-uitvoer zal je vertellen of er frames worden verwijderd of gedupliceerd.

  • De demuxer voor afbeeldingsbestanden gebruikt -framerate, terwijl de outputframesnelheid wordt ingesteld met -r.

  • Mogelijk moet u de optie -pix_fmt yuv420p toevoegen aan sommige omstandigheden als je “H.264-video uitvoert (de ffmpeg console-uitvoer zal je waarschuwen als dat nodig is). Dit zal een chroma-subsampling-schema gebruiken dat compatibel is met alle spelers.

Reacties

  • ffmpeg versie 3.2.2 vertelt me: Option framerate not found. 🙁
  • Ja, je hebt gelijk. Maar toch bestaat de optie -framerate niet meer. Ik zal mijn opmerking verwijderen, omdat deze niets te maken heeft met het converteren van een reeks afbeeldingen naar een video met een bepaalde framerate.
  • @erik -framerate bestaat. Het ' wordt gebruikt door de image- en rawvideo-demuxers en sommige invoerapparaten zoals x11grab en v4l2.
  • Waar is de optie -framerate gedocumenteerd? Ik ' heb de man ffmpeg pagina gelezen, maar ik kon niet ' kan het niet vinden. Een aanwijzer misschien?
  • OK, vond het … FFMPEG-DEVICES(1).

Answer

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

zal voldoende zijn in de laatste tijd t-versie van ffmpeg.

Reacties

Answer

Je hebt het over video-interpolatie. Er is geen manier waarop 7 fps 30 fps wordt zonder video-interpolatie … In principe wil je vanaf het begin 30 fps krijgen tijdens het maken van videos … Omdat video-interpolatie veel middelen en tijd in beslag neemt, en het kan worden gevuld met artefacten.Ik heb gehoord dat je van een enkele opname een korte film kunt maken, met Adobe, maar veel handmatig werk daar …

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *