Minulla ei ole mitään tietoa videokoodauksesta, minulla on OpenGL: ään kirjoitettu sovellus ja I tallennan sen luomat kehykset png -kuviin. Sovelluksen kehykset ovat 7 kuvaa sekunnissa ja yritän luoda niistä videon.

Tähän tarkoitukseen käytän tällaista ffmpegiä

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

joka otettiin tältä sivustolta , mietin kuitenkin, onko mahdollista saada video, joka näyttää animaation 30 kuvaa sekunnissa?

Kommentit

Vastaa

Käytän alla olevaa koodia samalla tavalla.

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

Komennon hajottaminen:

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ä lukee syötteen nopeudella 30 kuvaa sekunnissa (-framerate 30 -vaihtoehto) ja koodaa sen käyttämällä libx264 -koodekkia, vakionopeuskerroin (-crf 23 -vaihtoehto).

vastaus

Huomioitavaa on kaksi kehysnopeutta: tulo ja lähtö.

Oletusarvoisesti tulokehysnopeus on 25 , ja lähtö käyttää samaa kehysnopeutta kuin tulo, ellet kerro sille toisin.

Sama kehysnopeus tulolle ja lähdölle

Jos haluat syöttää ja -lähdöillä on sama kehysnopeus, anna sitten vain tulokehysnopeus. Tämä esimerkki asettaa kuvataajuudeksi 30000/1001 (NTSC-video):

ffmpeg -framerate 30000/1001 -i input output.mp4 
  • Vaihtoehtoisesti tässä esimerkissä voit käyttää ntsc 30000/1001 sijaan, mutta älä käytä 29.97, koska se ei ole tarkka tai Katso muut kehysnimen aliakset .

  • Koska oletuskehysnopeus on 25 ja jos aseta vain ulostulon kehysnopeus, sitten kehykset pudotetaan tai kopioidaan kompensoimiseksi. Siksi tulokehyksen nopeus asetetaan tässä tilanteessa.

Eri kehysnopeus tulolle ja lähtö

Joskus saatat haluta, että tulokehysnopeus ja tulostuskehysnopeus eroavat toisistaan. Voit esimerkiksi haluta syöttää kehykset tietyllä nopeudella ja kopioida tai pudottaa kehyksiä, jotta tulosteessa on erilainen kehysnopeus. Saatat haluta tehdä tämän johtuen tulosmuodosäiliön, soittimen ja / tai laitteen yhteensopivuusongelmista:

  • Tässä esimerkissä kehykset kopioidaan 10-25: een. Konsolilähtö kertoo, pudotetaanko tai kopioidaanko kehyksiä.

  • kuvatiedoston demuxer käyttää -framerate, kun taas lähdön kehysnopeus asetetaan käyttämällä -r.

  • Sinun on ehkä lisättävä -pix_fmt yuv420p -vaihtoehto joissakin olosuhteissa, jos tulostat H.264-videota uudelleen (ffmpeg -konsolilähtö varoittaa sinua tarvittaessa). Tämä käyttää kaikkien pelaajien kanssa yhteensopivaa kroma-alinäytteenottojärjestelmää.

Kommentit

  • ffmpeg-versio 3.2.2 kertoo minulle: Option framerate not found. 🙁
  • Kyllä, olet oikeassa. Mutta vaihtoehtoa -framerate ei kuitenkaan ole En enää. Poistan kommenttini, koska sillä ei todellakaan ole mitään tekemistä kuvasarjan muuntamisen videoksi tietyllä kuvanopeudella.
  • @erik -framerate se on olemassa. Se ' käyttää kuvan ja rawvideo-demuxereiden ja joidenkin syöttölaitteiden, kuten x11grab ja v4l2.
  • Missä on vaihtoehto -framerate dokumentoitu? Olen lukenut man ffmpeg -sivun, mutta en voinut '

et löydä sitä. Ehkä mitään osoitinta?

  • OK, löysit sen … FFMPEG-DEVICES(1).
  • vastaus

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

    riittää myöhässä t-versio ffmpeg-tiedostosta.

    Kommentit

    Vastaa

    Puhut videon interpoloinnista. Ei ole mitään tapaa, että 7 kuvaa sekunnissa tulisi 30 kuvaa sekunnissa ilman videon interpolointia … Pohjimmiltaan haluat saada 30 kuvaa sekunnissa alusta alkaen, videoiden tekemisen aikana … Koska videoiden interpolointi vie paljon resursseja ja aikaa, ja se saattaa olla täynnä esineitä.Kuulin, että voit tehdä yhdestä otetusta kuvasta lyhytelokuvia Adobe-palvelun avulla, mutta siellä on paljon manuaalista työtä …

    Vastaa

    Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *