Taimliapsusai vėl: Linux way

Posted: 2013-07-23 in Pezalai
Žymos:, ,

Time Lapse, pagreitintų filmų gamyba iš nuotraukų su Linux priemonėmis avconv arba ffmpeg | Darau, blėRašiau savo lengvai mėgėjišką patirtį apie pagreitinto judėjimo filmų gamybą. Nieko ypatingo, paprastos priemonės. Tik tiek, kad paskui iš surinktų nuotraukų gaminant filmuką pačiu telefonu jis smarkiai kaista, užtrunka tiek pat laiko beveik, kaip ir filmavimas (t.y. ilgai), o ir telefonu tuo metu naudotis nelabai galima — į foną nugrūstas filmukų gamybos procesas sustoja. Ir telefono išjungti negalima, čia kažkokia kliurka LapseIt programėlėje — nesusitvarko su energijos valdymu.

Tad paprasčiau yra nufotografuotų nuotraukų seką įsikelti į kompiuterį ir filmuką sukompiliuoti jame — ir trumpiau užtrunka, ir telefonui mažiau darbo, ir vieta kortelėje atlaisvinama, galima vėl kažką „filmuot“.

Taigi išsikeliu nuotraukas į kompiuterį. Filmuko gamybai iš nuotraukų naudoju avconv, buvusią ffmpeg programą. Ji valdoma komandine eilute, bet yra tikrai galinga. Daugybė kitų vizualiųjų vaizdo įrašų redagavimo programų tėra tik šios programos apvalkalai.

Pirmasis dalykas, kurį reikia padaryti, pervadinti failus taip, kad jų pavadinimuose būtų skaičiukų seka nuo 0, 1, 2, 3 ar 4. Čia yra avconv apribojimas: ši programėlė nesupranta tokių išraiškų, kaip „*.jpg“ — atseit, padaryk filmuką iš visų JPG failų. Ne, taip nėra. Šiaip failų vardai gali būti gan laisvos formos, bet būtinai turi būti didėjanti skaičių seka. Na, tarkim, aš darau 0001.jpg, 0002.jpg,.. 2053.jpg ir taip toliau. Gali būti ir manonotrafka003prolanga.jpg. Svarbu, kad pavadinime būtų skaičiukų seka ir tiek.

LapseIt programėlė kuria kitokius failų vardus, į jų pavadinimą įdėdama Unix laiką (sekundžių skaičių nuo kažkokios ten datos) ir dar tris skaičiukus:

imageSequence1373827989031.jpg
imageSequence1373827991493.jpg
imageSequence1373827994071.jpg
imageSequence1373827996523.jpg
imageSequence1373827999361.jpg
imageSequence1373828001752.jpg
imageSequence1373828004283.jpg
imageSequence1373828006760.jpg
imageSequence1373828009260.jpg
imageSequence1373828011744.jpg
imageSequence1373828014553.jpg

avconv tokių failų pavadinimų nesupranta, todėl susikūriau paprastą shell skriptuką, kuris šiuos failus ima ir pervadina „žmoniškai“, kad avconv suprastų. Štai jo kodas:

#!/bin/bash
a=0
for i in *.jpg; do
  new=$(printf "%04d.jpg" ${a}) #04 pad to length of 4
  mv ${i} ${new}
  let a=a+1
done

Tokį skriptuką paleidus failai gražiai pervadinami į tvarkingą seką:

0000.jpg
0001.jpg
0002.jpg
0003.jpg
0004.jpg
0005.jpg
0006.jpg
0007.jpg
0008.jpg

Tokius pavadinimus avconv jau gali sukramtyti.

Komanda šių failiukų pavertimui filmuku yra tokia (nesigilinant į smulkmenas, kas ką reiškia):

avconv -f image2 -i %04d.jpg -vf transpose=2 -r 24 -c:v libx264 -preset veryslow -crf 18 filmukas.mp4

Vienintelis dalykas: LapseIt mano telefone kartais nuotraukas paverčia pagal laikrodžio rodyklę. T.y. padaro vertikalias. Tam yra nurodymas transpose=2, kuris paverčia nuotraukas atgal į horizontalią padėtį prieš laikrodžio rodyklę. Na, nes žiūrėti paverstą filmuką yra nesąmonė, ar ne?

Eilinis saulėlydis pro langą ir gražūs debesys:

Komentarai
  1. Povilas Poderskis parašė:

    o aš vis galvoju, jeigu tarkim filmuot vaizdą, o paskui iš jo iškarpyt kadrus? irgi turėtų gautis gi ar ko aš čia nesuprantu?

    • Darau, Blė parašė:

      Na, aš ne ekspertas šitoj srity, tik pažaidžiu kartais. Bet mintis tokia: jei filmą norisi pagreitinti nedaug, tarkim 2–3 kartus, tai galima ir filmuot. Tačiau jei norisi pagreitinti 10 kartų, tai paprasčiausiai neverta užkišinėt laikmenos filmuota medžiaga, retai padaromos nuotraukos užima mažiau vietos. Seniau, kai išmanofonai buvo nelabai galingi arba dar jų nebuvo, buvo paprasčiau naudoti fotoaparatą, o ten irgi nepafilmuosi, nes ribotas kadrų skaičius. Yra ir kompiuterio resursų faktorius: sulipdyti iš kadrų reikia mažiau resursų, nei doroti vaizdo įrašus, ypač, jei jie taupumo atveju yra ne MJPEG, t.y. B kadrų yra tik dalis: „iškarpytus“ kadrus vis tiek reikia perskaičiuoti, kad būtų gautas tinkamai suformuotas tarpinis kadras. Renkant žaliavą telefonu su specializuota programa dar ir taupoma baterija: prigesinamas ekranas, nenaudojamas papildomas procesorius. Filmuojant mano telefonas valandos greičiausiai neištemptų, o su LapseIt ištempia ir pusdienį. Tiesa, namuose tas neaktualu, galima kabelį pajungti.

      Tiek minčių.

Parašykite komentarą

Įveskite savo duomenis žemiau arba prisijunkite per socialinį tinklą:

WordPress.com Logo

Jūs komentuojate naudodamiesi savo WordPress.com paskyra. Atsijungti /  Pakeisti )

Google photo

Jūs komentuojate naudodamiesi savo Google paskyra. Atsijungti /  Pakeisti )

Twitter picture

Jūs komentuojate naudodamiesi savo Twitter paskyra. Atsijungti /  Pakeisti )

Facebook photo

Jūs komentuojate naudodamiesi savo Facebook paskyra. Atsijungti /  Pakeisti )

Connecting to %s

Brukalų kiekiui sumažinti šis tinklalapis naudoja Akismet. Sužinokite, kaip apdorojami Jūsų komentarų duomenys.