Ero sivun ”FFmpeg” versioiden välillä

Linux.fista
Siirry navigaatioon Siirry hakuun
(ffmpeg:n peruskäyttöä)
p (mallinetta päivitetty, käyttöesimerkkejä lisätty)
 
(8 välissä olevaa versiota 4 käyttäjän tekeminä ei näytetä)
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ä=useita
| vakaaversio    = 5.0.1
  | kotisivu=[http://ffmpeg.mplayerhq.hu/ ffmpeg.mplayerhq.hu]}}
| vakaapvm      = 4. huhtikuuta 2022
FFmpeg on [[avoin lähdekoodi|avoimen lähdekoodin]] ohjelmistokokoelma, jonka avulla voidaan toistaa, tallentaa ja muuntaa toiseen muotoon erilaisia ääni- ja videoformaatteja.  
  | lisenssi       = [[LGPL]]/[[GPL]]
  | käyttöliittymä = teksti
  | kotisivu       = [https://ffmpeg.org/ ffmpeg.org]
| lähdekoodi    = [https://github.com/FFmpeg/FFmpeg github.com/FFmpeg/FFmpeg]
}}
 
'''FFmpeg''' on [[avoin lähdekoodi|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 [[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''-[[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 [[Xine]]).
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 [[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
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
 
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
$ 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


===Videoiden liittäminen peräkkäin===
===Tiedostojen liittäminen peräkkäin===
Usea eri 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). Ffmpeg 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
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
 
Poistetaan lopuksi nimetyt putket:
Poistetaan lopuksi nimetyt putket:
  [[rm]] valimuisti[12].mpg
  $ [[rm]] valimuisti[12].mpg


==Katso myös==
====concat====
* [[WinFF]] - FFmpeg:n [[edustaohjelma]]
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==
*[[wikipedia:fi:FFmpeg|FFmpeg suomenkielisessä Wikipediassa]]
*[[wikipedia:fi:FFmpeg|FFmpeg suomenkielisessä Wikipediassa]]
{{Malline:Videomuuntajat}}


[[Luokka:Multimedia]]
[[Luokka:Multimedia]]
[[Luokka:Tiedostomuotomuunnokset]]
[[Luokka:Tiedostomuotomuunnokset]]
[[Luokka:Komentorivin erikoisohjelmat]]

Nykyinen versio 17. huhtikuuta 2022 kello 18.33

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ö[muokkaa]

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[muokkaa]

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[muokkaa]

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[muokkaa]

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[muokkaa]

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