Ero sivun ”FFmpeg” versioiden välillä
Siirry navigaatioon
Siirry hakuun
p
mallinetta päivitetty, käyttöesimerkkejä lisätty
p (lähdekoodi) |
p (mallinetta päivitetty, käyttöesimerkkejä lisätty) |
||
Rivi 1: | Rivi 1: | ||
{{Ohjelma | {{Ohjelma | ||
| nimi=FFmpeg | | nimi = FFmpeg | ||
| kuva=[[Kuva:Ffmpeg-logo.png|250px]] | | kuva = [[Kuva:Ffmpeg-logo.png|250px]] | ||
| kuvateksti= | | kuvateksti = | ||
| lisenssi=[[LGPL]]/[[GPL]] | | ensijulkaisu = 20. joulukuu 2000 | ||
| käyttöliittymä= | | vakaaversio = 5.0.1 | ||
| kotisivu=[https://ffmpeg.org/ ffmpeg.org] | | vakaapvm = 4. huhtikuuta 2022 | ||
| lähdekoodi = [https://github.com/FFmpeg/FFmpeg github.com/FFmpeg/FFmpeg] | | lisenssi = [[LGPL]]/[[GPL]] | ||
| käyttöliittymä = teksti | |||
| kotisivu = [https://ffmpeg.org/ ffmpeg.org] | |||
| lähdekoodi = [https://github.com/FFmpeg/FFmpeg github.com/FFmpeg/FFmpeg] | |||
}} | }} | ||
Rivi 13: | Rivi 16: | ||
FFmpeg:n sisältämä tuki eri formaateille on saatu [[wikipedia:fi:takaisinmallinnus|takaisinmallinnus]]tekniikalla, eli se ei sisällä suljettua lähdekoodia. Useat formaatit on kuitenkin suojattu ohjelmistopatenteilla, minkä vuoksi FFmpeg on useissa [[jakelu]]issa saatavilla ainoastaan [[epäviralliset pakettilähteet|epävirallisista pakettivarastoista]]. | FFmpeg:n sisältämä tuki eri formaateille on saatu [[wikipedia:fi:takaisinmallinnus|takaisinmallinnus]]tekniikalla, eli se ei sisällä suljettua lähdekoodia. Useat formaatit on kuitenkin suojattu ohjelmistopatenteilla, minkä vuoksi FFmpeg on useissa [[jakelu]]issa saatavilla ainoastaan [[epäviralliset pakettilähteet|epävirallisista pakettivarastoista]]. | ||
FFmpeg-kokoelmaan sisältyy mm. | FFmpeg-kokoelmaan sisältyy mm. <tt>ffmpeg</tt>-[[komentorivi]]työkalu, jonka avulla voidaan muuntaa videota muodosta toiseen sekä [[wikipedia:fi:libavcodec|libavcodec]]-koodekkikirjasto, joka toimii taustalla useimmissa Linuxin mediasoittimissa (esimerkiksi [[MPlayer]], [[VLC]] ja [[mpv]]). | ||
==Käyttö== | ==Käyttö== | ||
Muutetaan [[ | |||
Muutetaan [[MP3]]-tiedosto [[Ogg Vorbis]] -muotoon. Lähdetiedosto määritellään [[valitsin|valitsimella]] <tt>-i</tt> ja käytettävä äänikoodekki valitsimella <tt>-c:a</tt>. Kohdetiedoston [[wikipedia:fi:Säiliömuoto|säiliömuoto]] (tässä [[Ogg]]) päätellään sen tiedostopäätteestä, mutta se on myös mahdollista määritellä erikseen valitsimella <tt>-f</tt>. | |||
$ ffmpeg -i musiikki.mp3 -c:a libvorbis musiikki.ogg | $ 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. | 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 | $ ffmpeg -codecs | ||
Leikataan äänitiedostosta halutun pituinen pätkä ja tallennetaan uuteen tiedostoon ilman uudelleenpakkausta | 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 | $ 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 <tt>-c:v</tt>) Ogg Theora. Äänen laaduksi määritellään 128 kt/s (valitsin <tt>-b:a</tt>) ja videon laaduksi 2500 kt/s (valitsin <tt>-b:v</tt>). | Muutetaan avi-tiedostossa oleva video Ogg-säiliömuotoon siten, että äänikoodekiksi tulee Ogg Vorbis ja videokoodekiksi (valitsin <tt>-c:v</tt>) Ogg Theora. Äänen laaduksi määritellään 128 kt/s (valitsin <tt>-b:a</tt>) ja videon laaduksi 2500 kt/s (valitsin <tt>-b:v</tt>). | ||
$ ffmpeg -i video.avi -c:a libvorbis -c:v libtheora -b:a 128k -b:v 2500k video.ogg | $ 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 <tt>-ss</tt> määritellään leikattavan osuuden alku (oletuksena tiedoston alku) ja valitsimella <tt>-t</tt> leikattavan osuuden pituus. Molemmat voidaan määritellä joko kokonaisina sekunteina tai muotossa <tt>tt:mm:ss[.xxx]a</tt> (tunti, minuutti, sekunti ja valinnaisesti sekunnin tuhannesosia). Valitsimien <tt>-c:a</tt> ja <tt>-c:v</tt> määre <tt>copy</tt> tarkoittaa alkuperäisen koodekin kopiointia ilman uudelleenpakkausta. | 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 <tt>-ss</tt> määritellään leikattavan osuuden alku (oletuksena tiedoston alku) ja valitsimella <tt>-t</tt> leikattavan osuuden pituus. Molemmat voidaan määritellä joko kokonaisina sekunteina tai muotossa <tt>tt:mm:ss[.xxx]a</tt> (tunti, minuutti, sekunti ja valinnaisesti sekunnin tuhannesosia). Valitsimien <tt>-c:a</tt> ja <tt>-c:v</tt> määre <tt>copy</tt> tarkoittaa alkuperäisen koodekin kopiointia ilman uudelleenpakkausta. | ||
$ ffmpeg -i video.avi -ss 86 -t 20 -c:a copy -c:v copy video.mkv | $ 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 <tt>-vn</tt>. | Kopioidaan videotiedostosta pelkkä ääniraita (ilman sen uudelleenpakkaamista) Matroska-säiliömuodossa olevaan tiedostoon. Videoraidan poisto tapahtuu valitsimella <tt>-vn</tt>. | ||
$ ffmpeg -i musiikkivideo.flv -vn -c:a copy ei-videota.mkv | $ 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 <tt>-an</tt>. | Kopioidaan videotiedostosta pelkkä videoraita (ilman sen uudelleenpakkaamista) Matroska-säiliömuodossa olevaan tiedostoon. Ääniraidan poisto tapahtuu valitsimella <tt>-an</tt>. | ||
$ ffmpeg -i musiikkivideo.flv -an -c:v copy ei-ääntä.mkv | $ ffmpeg -i musiikkivideo.flv -an -c:v copy ei-ääntä.mkv | ||
=== | ===Tiedostojen liittäminen peräkkäin=== | ||
Useampi 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 [[nimetty putki|nimettyjä putkia]]. | Useampi ääni- sekä videotiedosto on mahdollista liittää peräkkäin yhteen tiedostoon [[cat]]-komennon ja <tt>ffmpeg</tt>: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 [[nimetty putki|nimettyjä putkia]]. | ||
Luodaan tarvittavat nimetyt putket: | Luodaan tarvittavat nimetyt putket: | ||
$ mkfifo valimuisti1.mpg | $ mkfifo valimuisti1.mpg | ||
$ mkfifo valimuisti2.mpg | $ mkfifo valimuisti2.mpg | ||
Käynnistetään ensimmäisen lähdetiedoston muuttaminen mpg-muotoon (valitsimella <tt>-y</tt> vastataan automaattisesti kyllä kysymykseen olemassaolevaan tiedostoon tallentamisesta ja valitsimella <tt>-same_quant</tt> minimoidaan pakkaushäviöt) eri komentotulkki-istunnossa. Komennon suoritus jää odottamaan nimettyä putkea lukevaa ohjelmaa. | Käynnistetään ensimmäisen lähdetiedoston muuttaminen mpg-muotoon (valitsimella <tt>-y</tt> vastataan automaattisesti kyllä kysymykseen olemassaolevaan tiedostoon tallentamisesta ja valitsimella <tt>-same_quant</tt> minimoidaan pakkaushäviöt) eri komentotulkki-istunnossa. Komennon suoritus jää odottamaan nimettyä putkea lukevaa ohjelmaa. | ||
$ ffmpeg -i video1.avi -same_quant -y valimuisti1.mpg | $ 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. | 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 | $ ffmpeg -i video2.avi -same_quant -y valimuisti2.mpg | ||
Yhdistetään mpg-tiedostojen (nimetyt putket) sisältö cat-komennolla ja [[putki]]tetaan tulos ffmpeg:lle Matroska-säiliömuotoon muuttamista varten (äänikoodekkina Ogg Vorbis ja videokoodekkina MPEG-4). | |||
Yhdistetään mpg-tiedostojen (nimetyt putket) sisältö cat-komennolla ja [[putki]]tetaan tulos <tt>ffmpeg</tt>:lle Matroska-säiliömuotoon muuttamista varten (äänikoodekkina Ogg Vorbis ja videokoodekkina MPEG-4). <tt>ffmpeg</tt> saadaan lukemaan catilta putken ([[STDIN]]:in) kautta saatavaa dataa määrittelemällä lähdetiedostoksi viivan (<tt>-</tt>). | |||
$ cat valimuisti1.mpg valimuisti2.mpg | ffmpeg -i - -c:a libvorbis -c:v mpeg4 -same_quant uusi.mkv | $ cat valimuisti1.mpg valimuisti2.mpg | ffmpeg -i - -c:a libvorbis -c:v mpeg4 -same_quant uusi.mkv | ||
Poistetaan lopuksi nimetyt putket: | Poistetaan lopuksi nimetyt putket: | ||
$ [[rm]] valimuisti[12].mpg | $ [[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== | ==Aiheesta muualla== | ||
Rivi 50: | Rivi 73: | ||
{{Malline:Videomuuntajat}} | {{Malline:Videomuuntajat}} | ||
[[Luokka:Multimedia]] | [[Luokka:Multimedia]] | ||
[[Luokka:Tiedostomuotomuunnokset]] | [[Luokka:Tiedostomuotomuunnokset]] | ||
[[Luokka:Komentorivin erikoisohjelmat]] | [[Luokka:Komentorivin erikoisohjelmat]] |