En basit örnek olarak avi dosyasını mp4'e dönüştürmeyi deneyelim.
ffmpeg -i input.avi output.mp4Burada -i anahtarı giriş videosunu gösterir. Çıkış dosyası için bir anahtarı kullanılmaz. Yukarıdaki örnekte ayrıca kodek, bit oranı, kare sayısı vs. gibi parametreleri belirtmedik, çünkü ffmpeg varsayılanları kullanarak dönüşüm yaptı. Eğer varsayılanların haricinde değerler kullanmak istiyorsak şöyle bir komut işimizi görürdü:
ffmpeg -i input.avi -vframes 24 -aspect 4:3 -b:a 128k -b:v 2000k -c:a mp3 -c:v libx264 - output.mp4Burada kullanılan ve kullanılmayan anahtarlar şöyle:
-frames:v number çıkışa verilecek -toplam- kare sayısı
-ar rate kare hızı (Hz değeri, ondalık veya kısaltma)
-s size kare boyutu (Gen x Yük veya kısaltma)
-aspect oran resim oranı (4:3, 16:9 or 1.3333, 1.7777)
-bits_per_raw_sample oran ham örnek için bit oranı
-vn videoyu akışını görmezden gel (sil)
-c:v codec video kodeği
-c:a codec ses kodeği
-timecode hh:mm:ss[:;.]ff başlangıç zamanını belirtmek için
-pass n geçiş sayısı (iteratif, 1'den 3'e)
-filter:v filter video filtresi ayarlamak için
-b:a bitrate ses bit oranı
-b:v bitrate video bit oranı
-dn verileri görmezden gel
Videonun içinden bir kısmı kesip çıkartmak için:
ffmpeg -i input.avi -ss 00:01:05 -t 00:00:55 output.aviÖrneğin yukarıdaki komut 1. dakika 5. saniyede başlayıp 55 saniye sürecek (yani tam 2. dakikada bitecek) şekilde parçayı kesip çıkartır. Yukarıdaki komut kesme işleminden sonra avi tipi için varsayılanları kullanarak yeniden kodlama yapar. Yeniden kodlamadan kaydetmek için ses ve video kodekleri anahtarlarına "copy" yazmak gerekir. Örneğin
ffmpeg -i input.avi -ss 00:01:05 -t 00:00:05 -c:v copy -c:a copy output.aviBir video dosyasından sadece sesi alıp onu da mp3 formatında kaydetmek için
ffmpeg -i input.avi -vn output.mp3Elbette yine sesle ilgili şu anahtarları kullanabiliriz:
-frames:a sayı çıkışa verilecek ses "frame"i sayısı
-aq kalite ses kalitesi (kodeğe özel)
-ar oran Hertz cinsinden ses örneği sayısı
-ac kanal ses kanalı sayısı
-an sesi görmezden gel (sil)
-c:a codec Ses kodeğini belirt (değişiklik yapmadan 'copy')
-b:a oran ses bit oranı
-vol volume ses seviyesi (0 en az, 256 en yüksek)
-filter:a filter ses filtresi
-c:a pcm_s16le örnek başına 16 bit kodlama, signed, little-endian (tam liste)
-f s16le ham veri, signed, little-endian 16-bit
Ayrı ayrı dosyalarda bulunan ses ve videoyu birleştirmek için (formata hiç dokunmadan):
ffmpeg -i input_video.mp4 -i input_audio.mp3 -c:v copy -c:a copy output.mp4Buna göre örneğin elimizde kayıpsız flac dosyası varsa ve bundan 256k 44kHz 2 kanal kodlanmış mp3 yaratmak istiyorsak:
ffmpeg -i input.flac -b:a 256k -ar 44100 -ac 2 output.mp3Kullanılabilir kodek listesini görmek için
ffmpeg -codecskullanabilirz. Benzer şekilde -formats, -muxers, -demuxers, -encoders, -decoders, -filters anahtarları da mevcut.
Video kalitesini belirtmek için görüntü kodlamasında kullanılacak bit oranını belirtebiliriz:
-b:v 128kvideo kodeğinin saniyede 128 kilobit veri üretmesini sağlar. -qscale veya -vbr gibi değişken bit oranlı (kalite bazlı) parametreler de kullanmak mümkün. Ama bunların değerleri kodeğe bağlı.
Bir videonun her karesini resim olarak kaydetmek için
ffmpeg -i input.mp4 resim-%03.jpg
diyebiliriz. Burada %03, 3 haneli, başında sıfırlar bulunan sayıları ifade eder. Yani 000, 001, 002,... 999 dizisi. Eğer 1000 taneden fazla resim varsa ilk çıkarılanların üzerine yazılır. Benzer bir hedef ile animated GIF dosyasının her bir karesini bir resim olarak kaydetmek için
ffmpeg -i animated.gif kare-%03.jpg
işe yarar. Tam tersi durumda resim dizizinden video yapmak için ise
ffmpeg -i resim-%03.jpg output.mp4kullanılabilir. Burada -f image2 ile format gizli bir şekilde ima ediliyor. Ama ffmpeg çıkış formatlarını akıllı bir şekilde anlayabildiği için bu anahtara gerek kalmıyor. Eğer resimlerin başlangıcı 000 değilse bu durumda örneğin 138'den başlayan resimleri belirtmek için
ffmpeg -start_number 138 -i resim-%03.jpg output.mp4yazılmalı. Varsayılan olarak saniyede 25 resim gösterilir. Bu oranı değiştirmek için -framerate (veya yeni sürümlerde -r) ile bir kare oranı belirtebiliriz. Bir sunum tarzı video hazırlıyorsak ve her karenin 5 saniye görünmesini istiyorsak yapılacak
ffmpeg -r 1/5 -i resim-%03 output.mp4şeklinde 1/5 kare oranı seçmeliyiz. Resimlerin arasında silinen bir geçiş olmasını istiyorsak bunu aşağıdaki şekilde yapabiliriz:
ffmpeg -i resim-%03d.jpg -vf zoompan=d=(A+B)/B:fps=1/B,framerate=25:interp_start=0:interp_end=255:scene=100 -c:v mpeg4 -maxrate 5M -q:v 2 output.mp4Burada A her resmin saniye cinsinden geçişsiz gösterilme süresini, B ise geçişteki silinme etkili gösterilme süresini belirtir.
Saniyede 1 resim çıkartmak için
ffmpeg -i video.webm -vf fps=1 resim-%03d.pngya da seçilen dakika ve saniyedeki görünen resmi çıkartmak için ise
ffmpeg -i video.webm -ss 00:00:10 -vframes 1 thumbnail.pngkullanılabilir.
Filtreler özellikle çok faydalı olabilir. Örneğin ses için fade-in ve/veya fade-out eklemek için şu şekilde bir kullanım uygun:
ffmpeg -i audio.mp3 -filter:a 'fade=in:0:30,fade=out:9650:30' audio_fade.mp3Bu şekilde fade-in için 0 ile 30. kareler arasında, fade-out için ise 9650 ile 9580 arasındaki kareler verilmiş.
ffmpeg bazı video filtrelerine de sahip. Örneğin bir videoyu ters çevirmek için reverse filtresi kullanılır:
ffmpeg -i input.mp4 -filter:v reverse output.mp4
Hiç yorum yok:
Yorum Gönder