FFmpeg
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
Videomuuntajat | |
Graafiset | Handbrake | WinFF |
---|---|
Komentorivityökalut | FFmpeg | GStreamer | libav | MEncoder | MKVToolNix |
Keskeytyneet | Arista Transcoder | Transmageddon |