FFmpeg

Linux.fista
Versio hetkellä 17. huhtikuuta 2022 kello 18.33 – tehnyt Foliohattu (keskustelu | muokkaukset) (mallinetta päivitetty, käyttöesimerkkejä lisätty)
(ero) ← Vanhempi versio | Nykyinen versio (ero) | Uudempi versio → (ero)
Siirry navigaatioon Siirry hakuun
FFmpeg

Ensijulkaisu 20. joulukuu 2000
Vakaa versio 5.0.1  / 4. huhtikuuta 2022
Käyttöliittymä teksti
Lisenssi LGPL/GPL
Kotisivu ffmpeg.org
Lähdekoodi github.com/FFmpeg/FFmpeg

FFmpeg on avoimen lähdekoodin ohjelmistokokoelma, jonka avulla voidaan toistaa, tallentaa ja muuntaa toiseen muotoon erilaisia ääni- ja videoformaatteja.

FFmpeg:n sisältämä tuki eri formaateille on saatu takaisinmallinnustekniikalla, eli se ei sisällä suljettua lähdekoodia. Useat formaatit on kuitenkin suojattu ohjelmistopatenteilla, minkä vuoksi FFmpeg on useissa jakeluissa saatavilla ainoastaan epävirallisista pakettivarastoista.

FFmpeg-kokoelmaan sisältyy mm. ffmpeg-komentorivityökalu, jonka avulla voidaan muuntaa videota muodosta toiseen sekä libavcodec-koodekkikirjasto, joka toimii taustalla useimmissa Linuxin mediasoittimissa (esimerkiksi MPlayer, VLC ja mpv).

Käyttö

Muutetaan MP3-tiedosto Ogg Vorbis -muotoon. Lähdetiedosto määritellään valitsimella -i ja käytettävä äänikoodekki valitsimella -c:a. Kohdetiedoston säiliömuoto (tässä Ogg) päätellään sen tiedostopäätteestä, mutta se on myös mahdollista määritellä erikseen valitsimella -f.

$ ffmpeg -i musiikki.mp3 -c:a libvorbis musiikki.ogg

Näytetään käytössä olevan ffmpeg-ohjelman tukemat koodekit. Tulosteen ensimmäisessä sarakkeessa oleva D-kirjain tarkoittaa tukea koodekin lukemiselle, toisessa sarakkeessa oleva E-kirjain koodekkiin tallentamiselle, kolmannessa sarakkeessa oleva A-kirjain äänikoodekkia ja kolmannessa sarakkeessa oleva V-kirjain videokoodekkia.

$ ffmpeg -codecs

Leikataan äänitiedostosta halutun pituinen pätkä ja tallennetaan uuteen tiedostoon ilman uudelleenpakkausta

$ ffmpeg -ss 00:00:40 -t 00:01:15 -i LinuxTechCrunch.mp3 -c:a copy LinuxTechCrunch_cut.mp3

Muutetaan avi-tiedostossa oleva video Ogg-säiliömuotoon siten, että äänikoodekiksi tulee Ogg Vorbis ja videokoodekiksi (valitsin -c:v) Ogg Theora. Äänen laaduksi määritellään 128 kt/s (valitsin -b:a) ja videon laaduksi 2500 kt/s (valitsin -b:v).

$ ffmpeg -i video.avi -c:a libvorbis -c:v libtheora -b:a 128k -b:v 2500k video.ogg

Leikataan avi-säiliömuodossa olevasta videotiedostosta 86 sekunnin ja 106 sekunnin välillä sijaitseva pätkä, ja tallennetaan se ilman uudelleenpakkausta Matroska-säiliömuotoon. Valitsimella -ss määritellään leikattavan osuuden alku (oletuksena tiedoston alku) ja valitsimella -t leikattavan osuuden pituus. Molemmat voidaan määritellä joko kokonaisina sekunteina tai muotossa tt:mm:ss[.xxx]a (tunti, minuutti, sekunti ja valinnaisesti sekunnin tuhannesosia). Valitsimien -c:a ja -c:v määre copy tarkoittaa alkuperäisen koodekin kopiointia ilman uudelleenpakkausta.

$ ffmpeg -i video.avi -ss 86 -t 20 -c:a copy -c:v copy video.mkv

Kopioidaan videotiedostosta pelkkä ääniraita (ilman sen uudelleenpakkaamista) Matroska-säiliömuodossa olevaan tiedostoon. Videoraidan poisto tapahtuu valitsimella -vn.

$ ffmpeg -i musiikkivideo.flv -vn -c:a copy ei-videota.mkv

Kopioidaan videotiedostosta pelkkä videoraita (ilman sen uudelleenpakkaamista) Matroska-säiliömuodossa olevaan tiedostoon. Ääniraidan poisto tapahtuu valitsimella -an.

$ ffmpeg -i musiikkivideo.flv -an -c:v copy ei-ääntä.mkv

Tiedostojen liittäminen peräkkäin

Useampi ääni- sekä videotiedosto on mahdollista liittää peräkkäin yhteen tiedostoon cat-komennon ja ffmpeg:n avulla, mikäli käytetty tiedostomuoto tukee tätä. Tuen omaavia tiedostomuotoja ovat ainakin MPEG-1, MPEG-2 PS ja DV. Seuraavassa liitetään videotiedostojen video1.avi ja video1.avi sisältö peräkkäin tiedostoon uusi.mkv muuttamalla ne yhdistämisen ajaksi mpg-muotoon (MPEG-1). Isojen välimuistitiedostojen välttämiseksi apuna käytetään nimettyjä putkia.

Luodaan tarvittavat nimetyt putket:

$ mkfifo valimuisti1.mpg
$ mkfifo valimuisti2.mpg

Käynnistetään ensimmäisen lähdetiedoston muuttaminen mpg-muotoon (valitsimella -y vastataan automaattisesti kyllä kysymykseen olemassaolevaan tiedostoon tallentamisesta ja valitsimella -same_quant minimoidaan pakkaushäviöt) eri komentotulkki-istunnossa. Komennon suoritus jää odottamaan nimettyä putkea lukevaa ohjelmaa.

$ ffmpeg -i video1.avi -same_quant -y valimuisti1.mpg

Käynnistetään toisen lähdetiedoston muuttaminen mpg-muotoon kolmannessa komentotulkki-istunnossa. Komennon suoritus jää odottamaan nimettyä putkea lukevaa ohjelmaa.

$ ffmpeg -i video2.avi -same_quant -y valimuisti2.mpg

Yhdistetään mpg-tiedostojen (nimetyt putket) sisältö cat-komennolla ja putkitetaan tulos ffmpeg:lle Matroska-säiliömuotoon muuttamista varten (äänikoodekkina Ogg Vorbis ja videokoodekkina MPEG-4). ffmpeg saadaan lukemaan catilta putken (STDIN:in) kautta saatavaa dataa määrittelemällä lähdetiedostoksi viivan (-).

$ cat valimuisti1.mpg valimuisti2.mpg | ffmpeg -i - -c:a libvorbis -c:v mpeg4 -same_quant uusi.mkv

Poistetaan lopuksi nimetyt putket:

$ rm valimuisti[12].mpg

concat

Eri lähteiden yhdistäminen onnistuu myös concat-valitsimen avulla.

$ ffmpeg -f concat -i fallout.shelter.life-part.1-7-ACI6Mq-g0.mp4 fallout.shelter.life-part.2-OMoMSUtRCzU.mp4 -map 0 -c copy fallout.shelter.life.mp4

Lisätään videoon staattinen kuva päälle

Esimerkiksi vaikkapa suoratoistopalveluun, kun halutaan oman kanavan logo tai vesileima vaikkapa vasempaan yläreunaan, 25 pikseliä ylhäältä ja vasemmalta ylänurkasta (0,0), näyttäen ensimmäiset 20 sekuntia tämä onnistuu seuraavasti:

$ ffmpeg -i lähde_video.webm -i kanavan_logo.png -filter_complex "[0:v][1:v] overlay=25:25:enable='between(t,0,20)' -pix_fmt yuv420p -c:a copy valmis_tuotos.webm

Aiheesta muualla

v  k  m
Videomuuntajat
Graafiset Handbrake | WinFF
Komentorivityökalut FFmpeg | GStreamer | libav | MEncoder | MKVToolNix
Keskeytyneet Arista Transcoder | Transmageddon