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 lukenutman ffmpeg
-sivun, mutta en voinut '
et löydä sitä. Ehkä mitään osoitinta?
FFMPEG-DEVICES(1)
. vastaus
ffmpeg -framerate 30 -i img%03d.png output.mp4
riittää myöhässä t-versio ffmpeg-tiedostosta.
Kommentit
- Älä unohda
-pix_fmt yuv420p
-muotoa, tai saatat päätyä tiedostoihin monet ohjelmistotyökalut eivät ' pidä: trac.ffmpeg.org/ticket/8856
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ä …
-framerate
saadaksesi halutut tulokset.