Pääsivulle | TIETOTEKNIIKAN PÄÄSIVULLE
ffmpeg
Monipuolinen sovellus
ffmpeg on komentoriviltä tai sovellusten sisältä käytettävä
erittäin monipuolinen sovellus video- ja äänitiedostojen
käsittelyyn. Netistä löytyy laajoja oppaita eri parametrien
käyttämiseen. Tässä esitetään muutama tärkein käyttötapa.
Sovellus löytyy osoitteesta http://ffmpeg.org/ . Sieltä löytyy omat
latauspaketit Windowsille, Macille ja Linuxille.
Windowsia varten paketeista tulee kaivaa esiin valmiiksi
käännetty sovellus ffmpeg.exe. Sen voi sijoittaa koneellaan
haluaamansa kansioon, missä sitä aikoo käyttää.
Lataa Macille tarkoitettu valmis paketti (uusin versio) netistä
ja pura se, tuloksena tiedosto ffmpeg. Sijoita se kansioon, missä
haluat itse tai sovelluksesi toivot sitä käytettävän.
Käyttäminen ohjelmakoodin sisällä
Tehdään softan sisällä seuraava ffmpeg-homma, eli otetaan videosta
esikatselukuva kolmen sekunnin päästä alusta:
ffmpeg -y -i "DS0234.mp4" -an -ss 00:00:03 -vframes 1 -f mjpeg
"DS0234.jpg"
Swift-sovelluksessa ffmpeg on käytettävissä näin:
let pitz =
"00:00:03"
let ffz = myappdirpolkuz + "ffmpeg"
let vidz = "/Users/erkki/Desktop/DS0234.mp4"
let polz = "/Users/erkki/Desktop/tilap/DS0234.jpg"
let argms = ["-y", "-i", vidz, "-an", "-ss", pitz, "-vframes",
"1", "-f", "mjpeg", polz]
let task = Process.launchedProcess(launchPath: ffz, arguments:
argms)
task.waitUntilExit()
C# (dotnet) -sovelluksessa ffmpeg on käytettävissä seuraavasti:
string
pitz = "00:00:03 ";
string ffz = "c:\\tilap\\ffmpeg.exe"; //
täysi polku ffmpeg:lle (tässä esimerkki)
string vidz = "c:\\tilap\\DS0234.mp4";
string polz = "c:\\tilap\\DS0234.jpg"
using
(System.Diagnostics.Process proc = new
System.Diagnostics.Process())
{
proc.EnableRaisingEvents = false;
sb = new StringBuilder("-y -i \""); //
Huom! lainausmerkit tarpeen tiedostonimien ympärillä
sb.Append(vidz);
sb.Append("\" -an -ss ");
sb.Append(pitz);
sb.Append("-vframes 1 -f mjpeg \"");
sb.Append(polz);
sb.Append("\"");
proc.StartInfo.Arguments = @sb.ToString();
proc.StartInfo.FileName = ffz;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.Start();
proc.WaitForExit();
proc.Close();
}
Käyttöesimerkkejä
Esimerkeissä on tiedostomuotoja mp4, jpg, VOB ym. Vastaavan voi
tehdä myös "melkein kaikilla" muillakin vastaavilla (kuva/video)
tiedostomuodoilla, mutta konvertointi toiseen muotoon voi edellyttää
tietoja siihen sopivista codeceista (rakennekuvauksista)
VIDEOTIEDOSTON METATIETOJA
Saadaan mm. videon kehysmitat, videon tekohetken (creation_time)
stream kerrallaan, orientation (rotate), kestoaika, nopeuden jne.
Kehysmittojen ohella saadaan eri aspect ratiot DAR, PAR ja SAR, jos
niitä tarvitaan tuloksen määrittelyyn:
DAR = display aspect ratio w:h = the aspect ratio the video should
be played back at
PAR = pixel aspect ratio x:y = the aspect ratio of the video
pixels themselves
SAR= storage aspect ratio = the dimensions of the video frame,
expressed as a ratio
ffmpeg -i
"IMG_1505(korkea).MOV" -hide_banner > testi.txt 2>&1
(vie tiedot tiedostoon testi.txt. Koska muunnoskomennon osia
puuttuu, tämä on error.txt ja '2>&1' ohjaa sen samaan kuin
stdout eli tiedostoon texti.txt)
ESIKATSELUKUVA VIDEOSTA
ffmpeg -i
"oma video.avi" -an -ss 00:00:03 -s 120x90 -vframes 1 -f mjpeg
"oma tulos.jpg"
(tekee esikatselukuvan 120x90, oltava luvut parillisia)
ffmpeg -y -i
pushbutt.avi -an -ss 00:00:03 -vframes 1 -f mjpeg tulos1.jpg
(lippu -y jotta ei kysy saako kirjoittaa tilapäistiedostoon päälle)
(tämä tekee videon kehysmitan kokoisen kuvan)
VIDEOTIEDOSTON KONVERTOINTI TOISEEN MUOTOON
ffmpeg
-i INPUT.VOB OUTPUT.mp4
ffmpeg -i INPUT.wmv -c:v libx264 -crf 18
OUTPUT.mp4
(tällä tavoin wmv/avi -> mp4 saadaan kuvan laatu varmuudella
säilymään)
(crf 18 visually lossless, 20 oikein hyvä, 23 default)
ffmpeg -i
alku.mp4 -f 3gp -vcodec libx264 -acodec aac loppu.3gp
(mp4 konvertoidaan muotoon 3gp)
VIDEOTIEDOSTOJEN YHDISTÄMINEN YHDEKSI
cat first.VOB
second.VOB third.VOB | ffmpeg -i - outfile.mp4
Uudet ffmpeg-versiot tukevat yhdistämistä input-tiedoston
operaattorilla, esimerkiksi:
ffmpeg -i
concat:VTS_01_0.VOB\|VTS_01_1.VOB\|VTS_01_2.VOB outfile.mp4
ÄÄNITIEDOSTOJEN YHDISTÄMINEN YHDEKSI
ffmpeg -i "concat:Synkka.mp3|Synkka2.mp3" - acodec copy tulos.mp3
Ylläoleva ei toimi
wav-tiedostoilla. Tee aputiedosto (alla luettelo.txt), jonne
laitat yhdistettävien tiedostojen nimet:
file 'Mummo1.wav'
file 'Mummo2.wav'
Ja itse komento:
ffmpeg -f concat -i luettelo.txt -c copy Mummo12.wav
MUUNNA ÄÄNITIEDOSTO m4a -> mp3
ffmpeg -i susi.m4a -acodec libmp3lame -aq 2 susi.mp3
VIDEON ÄÄNI KUULUU VAIN OIKEASTA KAIUTTIMESTA - MITEN MOLEMPIIN
Tämä hoitaa äänikanavat kuntoon:
ffmpeg
-i INPUT.wmv -map_channel 0.0.0 OUTPUT.mp4
(videon laatu putosi jos output oli wmv)
Huom! Havaitsin että käsky ei mene läpi jos
tiedostonimessä on skandeja
ffmpeg -i
INPUT.wmv -c:v libx264 -crf 18 -map_channel 0.0.0 OUTPUT.mp4
Löytyi oma digivideosta avi:ksi tehty tiedosto, jossa piti käyttää
0.1.0
KORJAA VIDEON SIVUSUHDE
Katso ensin tiedostosta mikä sivusuhde siinä on: ffmpeg -i
Lulu.mp4
Löytyi 1280x404 mikä on virheellinen koska suhteen
oltava 4:3
Korjaa sivusuhde -> 4:3 pitämällä korkeus ennallaan:
ffmpeg -i
Lulu.mp4 -s 538x404 Lulu2.mp4
OTA ÄÄNIRAITA VIDEOSTA
ffmpeg -i
video.flv -ab 160k -ac 2 -ar 44100 -vn audio.mp3
-i indicates the input
-ab indicates the bit rate (in this example 160kb/sec)
-vn means no video ouput
-ac 2 means 2 channels
-ar 44100 indicates the sampling frequency.
OTA HALUAMASI PÄTKÄ mp3-TIEDOSTOSTA
Äänitiedoston alku.mp3 keskeltä halutaan irrottaa osa
omaksi tiedostoksi tulos.mp3
Alkukohta on 30 sekunnissa, ja halutaan siitä eteenpäin 25 sekuntia
talteen:
ffmpeg -ss
00:00:30.00 -t 25 -i alku.mp3 -acodec copy tulos.mp3
Huomaa argumenttien -ss, -t ja -i erikoinen järjestys.
OTA HALUAMASI PÄTKÄ VIDEOTIEDOSTOSTA
Videotiedostosta alku.mp4 halutaan ottaa keskeltä pätkä
sekuntiväliltä 27...42:
ffmpeg -i
alku.mp4 -ss 27 -c copy -to 42 uusi.mp4
Lisätietoja:
http://superuser.com/questions/138331/using-ffmpeg-to-cut-up-video
TEE VIDEON MUSIIKISTA SOITTOÄÄNI iPHONE
Ensin muunna video mp3-tiedostoksi, pituus max 30 sekuntia (ohje
edellä), mutta -ac 1
Sitten muunna mp3-tiedosto muotoon m4a:
ffmpeg -i
alku.mp3 -y loppu.m4a
Muuta tunnisteeksi m4r ja vie m4r-tiedosto iPhoneen
ÄÄNIRAIDAN KORJAUS
Youtubesta ladatusta videopätkästä ei kuulunut ääntä. Korjataan:
ffmpeg -i
joxsz.mp4 -b:a 160k korjattu.mp4
VIDEON KÄÄNTÄMINEN 90 ASTETTA
ffmpeg -i
inputfile.mpg -vf "transpose=1" outputfile.mpg
Transpose-arvo:
0=90CounterCLockwise and Vertical Flip (default)
1=90Clockwise
2=90CounterClockwise
3=90Clockwise and Vertical Flip
--------------------------------
(sivua muokattu 20.12.2019)