Minska blogas

Meniškas peizažas

Žinutės | Blogas | Mintys | Elektronika | Technologijos | Politika | Oro stebėjimas | Filmai ir serialai | Knygos | Apie

Bash triukai: 2 - video įrašų paspartinimas su ffmpeg

Situacija tokia: prieš rinkimus be visokiausių kitų patikrinimų, ką kokios partijos nuveikė, noriu pasiklausyti ir kaip kokios partijos meluoja per debatų laidas, kurias rodo per LRT. Kaip atsisiųsti laidas iš LRT puslapio parodysiu kitą kartą, o dabar bėda yra ta, kad visų politikų pasakos vienodos ir nuspėjamos. Nuobodu. Aš esu jau pripratęs klausyti tinklalaidžių, pagreitintų 2,3 kartų ir žiūrėti Youtube įrašus bent 1,5 greičiu. Taip taupau laiką. Na, o ką daryti su atsisiųstais įrašais, esančiais kompiuteryje? Deja, ne taip patogu, reikia video failus konvertuoti. Tam naudoju ffmpeg:

                for f in SEIM_201609*; do ffmpeg -i $f -filter:a "atempo=2" -filter:v "setpts=0.5*PTS" "${f%.*}"_greiciau.mp4; done
            

Komanda panaši kaip pirmame bash triuke. Kiekvienam failui, prasidedančiam "SEIM_201609" atlikti ffmpeg komandą. O ffmpeg komanda turi kelis nustatymus. Pirmiausia "-i" yra įėjimo failas, kuris bus konvertuotas. Failo pavadinimas gaunamas iš "$f", kuris išsiskleidžia į pilną failo pavadinimą, priklausomai nuo kurio failo eilė for kilpoje. Toliau eina audio filtras "-filter:a "atempo=2"". Būtent šis filtras nurodo pagreitinti garso takelio tempą 2 kartus. Beje, verta atkreipti dėmesį, kad didinant garso tempą, o ne greitį išsaugomas tembras ir kalbantys žmonės neskamba kaip Alvinas ir burundukai. Toliau seka video filtras "-filter:v "setpts=0.5*PTS"". Čia reikia rašyti 0.5, nes per pusę trumpinamas rodymo laikas (nežinau kaip tiksliai išversti, angliškai "presentation timestamp (PTS)") ir taip per gaunasi vaizdo įrašas per pusę trumpesnis - dvigubai greitesnis. Galiausiai nurodomas konvertuoto failo pavadinimas. Kada nors aprašysiu išsamiau, ką reiškia panašios manipuliacijos į ""${f%.*}"_greiciau.mp4", bet kol kas pasakysiu, kad tai nuo failo pavadinimo pašalina galūnę. Visi failai buvo mp4, todėl galūnė buvo .mp4. Ir vietoj tos galūnės pridedama "_greičiau.mp4". Taigi, padaroma taip: įrašas.mp4 pavirsta į įrašas_greičiau.mp4.

Beje, skatinu naudoti laisvus vaizdo įrašų formatus: theora ar webm, nes jie nėra sukaustyti patentų.

Šis konvertavimas užtrunka. Mano kompiuteris su Intel Core 2 Duo procesoriumi užtrunka panašiai kiek ir pats vaizdo įrašas. Jei jūsų kompiuteris galingesnis, konvertavimas gali trukti žymiai trumpiau. Taip pat noriu paminėti, kad aš naudoju Gentoo operacinę sistemą ir kadangi visos programos sukompiliuojamos, galiu pasirinkti tam tikras funkcijas. Esu pasirinkęs, kad ffmpeg naudotų abu procesoriaus branduolius. Kai naudojau Arch Linux, ten esantis ffmpeg paketas galėjo naudoti tik vieną branduolį ir dėl to konvertavimas užtrukdavo ilgiau.

Dar vienas pavyzdys. Šį kartą su vienu failu:

                ffmpeg -i Irasas.ogv -filter:a "atempo=2" -filter:v "setpts=0.5*PTS" Irasas_greiciau.ogv
             

Štai taip galima sumažinti vaizdo įrašų trukmę ir taupyti laiko. Tiesa, galbūt reikia šiek tiek laiko priprasti prie du kartus greitesnio tempo, tai galima daryti palaipsniui, didinant greitį pamažu, bet aš jau įpratęs galiu viską išgirsti ir suprasti, kas yra šnekama, o žiūrint vaizdo įrašus, trunkančius apie valandą ir kurie nėra ypatingai įdomūs, šis pagreitinimas labai pagelbėja.


Irašo komentarai

Komentarus siųskite man elektroniniu paštu, adresu: mindaugas per minska taškas lt.

Laiške nurodykite įrašo pavadinimą ir ar norite, kad jūsų komentaras būtų paviešintas.