FFmpeg nedir?
FFmpeg çok sayıda video/ses dosya formatını(mp4, mkv, ts, mov, webm, mp3...) destekleyen, video/ses dosyalarını açıp oynatabilen, farklı bir formata dönüştürebilen, video/ses aygıtlarının canlı kaydını yapabilen, çoğu ses/video kodeklerini(sıkıştırak kodlama ve çözme)(h264, h265, vp8, vp9, aac, opus, mp3...) destekleyen, çapraz platformlu(Windows, Linux, Mac...), açık kaynak kodlu ücretsiz bir yazılımdır. Birçok uygulama FFmpeg kütüphanelerini kullanır(VLC, Shotcut, Kdenlive, ShareX...)
FFmpeg indirme ve kurma
FFmpeg kullanma ve yardım
FFmpeg kullanımı çok basit. Windows+R ile çalıştır'ı açın CMD yazıp Entere basın.
Windows komut satırında
CD C:\FFmpeg\bin
ile klasöre geçiş yapın.
ffmpeg -h
ile kısa yardım metnini görebilirsiniz. FFmpeg kullanım şablonu:
ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
şeklindedir. Yani:
ffmpeg [seçenekler] [[girdi seçenekleri] -i girdi_dosyası]... {[çıktı seçenekleri] çıktı_dosyası}...
FFmpeg'in çok sayıda işlevi, seçenekleri ve buna bağlı parametreleri var. Ayrıntılı bilgi almak için https://trac.ffmpeg.org , https://ffmpeg.org/documentation.html ve http://ffmpeg.org/ffmpeg.html web sayfalarına veya bilgisayarınızdaki C:\FFmpeg\doc klasöründeki dosyalara başvurabilirsiniz.
FFmpeg ile ekran kaydı
En basit kullanımı:
ffmpeg -f gdigrab -i desktop output.mp4
Girdi ve çıktı ile ilgili seçenekler girmedik ancak üstteki resimde de görüldüğü gibi varsayılan değerler ile ekran kaydı yapıldı.
Çıktı dosyası C:\FFmpeg\bin klasöründe output.mp4 olarak kaydedilir. Farklı bir klasöre adı dosya adı ve uzantısı ile kaydetmek isterseniz aşağıdaki şekilde verebilirsiniz. Çıktı dosya uzantısı olarak hangi uzantıyı verirseniz o uzantının dosya formatında kaydedilir. mov, avi, mp4, mpg, mkv ...
ffmpeg -f gdigrab -i desktop d:\MESUT\Video\ekrankaydi.mkv
Kaydettiğiniz video dosyası hakkında kısa bilgi almak isterseniz aşağıdaki satırı girin.
ffmpeg -i output.mp4
Dosyayı oynatmak için ffplay output.mp4 girilebilir.
Dosyayı
oynattığınızda ses kaydının olmadığını göreceksiniz.
Ses kaydetme
Ekran görüntüsü ile beraber ses kaydı da yapmak için:
ffmpeg -f gdigrab -i desktop -f dshow -i audio="Mikrofon (Realtek High Definition Audio)" ekrankaydi.mp4
Bendeki ses aygıtı Mikrofon (Realtek High Definition Audio) olduğu için bu aygıt adı girildi.
Aygıt listesini alma
Sisteminizdeki aygıtları listelemek için:
ffmpeg -list_devices true -f dshow -i dummy
Yalnız ses kaydı
Sadece ses kaydı yapmak için:
ffmpeg -f dshow -i audio="Mikrofon (Realtek High Definition Audio)" seskaydi.mp3
Video kare sayısı
mp4 dosya için varsayılan kare sayısı 29.97 fps olarak belirlendi.
Farklı bir kare sayısı ile kaydetmek için -r parametresi kullanılır. Saniyede 30 kare kaydetmek için örnek:
ffmpeg -f gdigrab -i desktop -r 30 ekrankaydi.mp4
Kare sayısını belirlemek için fps filtresi de kullanılabilir.
Ekranın belli bir bölgesini kaydetme
Boyut ve bölge ayarlama:
Video boyutunu ayarlama için -video_size parametresi kullanılır.
ffmpeg -f gdigrab -video_size 1024x768 -i desktop ekrankaydi.mp4
Bölgenin soldan uzaklığı: -offset_x
Bölgenin üstten uzaklığı:
-offset_y
Örnek: Ekranın x=100, y=200 noktasından, genişlik 1000, yükseklik 500 piksel boyutunda kaydetme
ffmpeg -f gdigrab -video_size 1000x500 -offset_x 100 -offset_y 200 -i desktop ekrankaydi.mp4
Ekranın 10,20 konumundan 640x480 piksellik, saniyede 30 kare ve bölge sınırlarına çerçeve:
ffmpeg -f gdigrab -framerate 30 -offset_x 10 -offset_y 20 -video_size 640x480 -show_region 1 -i desktop output.mkv
-show_region parametresi kaydedilen alanı çerçeve ile belirtmek içindir.
-framerate video kare sayısı içindir
Donanım kodlaması
Birçok platform, videoyla ilgili bir dizi görevi gerçekleştirmek için özel donanıma erişim sunar. Bu tür donanımların kullanılması, kod çözme, kodlama veya filtreleme gibi bazı işlemlerin daha hızlı tamamlanmasına veya diğer kaynakların (özellikle CPU) daha az kullanılmasına imkan sağlar, ancak farklı veya daha düşük sonuçlar verebilir veya yalnızca yazılım kullanıldığında mevcut olmayan ek kısıtlamalar getirebilir. PC benzeri platformlarda, video donanımı tipik olarak bir GPU'ya entegre edilir (AMD, Intel veya Nvidia)
Donanım kodlayıcıları tipik olarak x264 gibi iyi yazılım kodlayıcılarından önemli ölçüde daha düşük kalitede çıktı üretir, ancak genellikle daha hızlıdır ve fazla CPU kaynağı kullanmaz. (Yani, aynı algısal kalitede çıktı elde etmek için daha yüksek bir bit hızına ihtiyaç duyarlar veya aynı bit hızında daha düşük bir algısal kalitede çıktı üretirler.)
Değişken standardizasyon durumuna sahip birçok farklı API mevcuttur. FFmpeg, çeşitli desteklerle bunların çoğuna erişim sunar. Ayrıntılı bilgi için: HWAccelIntro
-hwaccel parametresi dahili hwaccel kod çözücüleri seçenek aracılığıyla etkinleştirilir . Yazılım kod çözücü normal olarak başlar, ancak donanımda kodu çözülebilen bir akış algılarsa, tüm önemli işlemleri bu donanıma devretmeye çalışır.
NVENC(Nvidia Encoder) ve NVDEC, Nvidia'nın donanım hızlandırmalı kodlama ve kod çözme API'leridir. Bendeki sistemde Nvidia GTX 1050 Ti ekran kartı bulunuyor. O yüzden buna uygun örnek vereceğim. Diğer donanımlar için HWAccelIntro sayfasına bakınız
NVENC; H.264 ve HEVC kodlaması için kullanılabilir. FFmpeg; h264_nvenc ve hevc_nvenc kodlayıcılar aracılığıyla NVENC'yi destekler.
H.264 için örnek;
ffmpeg -f gdigrab -i desktop -c:v h264_nvenc ekrankaydi.mp4
HEVC (H.265) için örnek:
ffmpeg -f gdigrab -i desktop -c:v hevc_nvenc ekrankaydi.mp4
Kodlayıcı seçeneklerini görmek için ffmpeg -h encoder=kodlayıcı_adı şablonunu kullanabilirsiniz.
Örnekler:
ffmpeg -h encoder=libx264 ffmpeg -h encoder=libx265 ffmpeg -h encoder=hevc_nvenc ffmpeg -h encoder=h264_nvenc
Sıkıştırma değeri
Dosya boyutunun küçük olması için video/ses dosyaları bir miktar kayıp göze alınarak sıkıştırılır. Bu, resim dosyalarındaki sıkıştırmaya benzer. Örneğin JPG sıkıştırılmış resim dosya formatıdır.
Her video/ses kodek'inin kendine özgü sıkıştırma algoritması vardır. O yüzden performans ve kaliteleri farklıdır. Video sıkıştırmak için çeşitli seçenekler olsa da basit olarak CRF(Constant Rate Factor = Sabit Oran Faktörü) parametresi kullanılır.
CRF değeri 0-51 arasında olabilir. Daha düşük değerler, daha iyi kalite ancak buna karşılık daha büyük dosya boyutu demektir. 23 varsayılandır ve 51 olası en kötü kalitedir. Öznel olarak makul bir aralık 17-28'dir. 17 veya 18'in görsel olarak kayıpsız veya kayıpsıza çok yakın olduğu görülebilir ancak teknik olarak kayıpsız değildir. 0 kayıpsız anlamına gelir.
ffmpeg -f gdigrab -i desktop -crf 17 ekrankaydi.mp4
Sıkıştırma hızı
Dosya sıkıştırma programlarında dosya sıkıştırma yöntemini fark etmişsinizdir.
Örneğin; Winrar için
; depola, en hızlı, hızlı, normal, iyi, en iyi seçenekleri var. en
iyi seçeneği diğerlerine göre en küçük dosya boyutunu oluşturacaktır ancak
sıkıştırmak için daha çok işlem yaptığı için sıkıştırma süresi daha uzun
olacaktır. Çok büyük dosyalarda ve zaman kısıtlı olduğu durumlarda tercih
edilmez.
FFmpeg video/ses sıkıştırmada da winrar'dakine benzer
sıkıştırma yöntemleri vardır.
Azalan hız sırasına göre mevcut ön ayarlar(preset):
ultrafast
superfast
veryfast
faster
fast
medium
slow
slower
veryslow
placebo
Bu ayarlar dosya boyutu ve zaman ile ters orantılıdır. Örneğin ultrafast; aynı video için çok hızlı bir sıkıştırma sağlarken diğerlerine göre daha büyük dosya boyutu oluşturur.
Donanımınız hızlı ise daha küçük dosya boyutu elde etmek için daha düşük
ayar seçilebilir. Ekran kaydı ve canlı yayınlar için anlık kayıt veya yayın
için yükleme yapıldığından dolayı ultrafast ayarının seçilmesinde
fayda var.
ffmpeg -f gdigrab -i desktop -c:v libx264 -preset ultrafast -qp 0 ekrankaydi.mkv
Kayıpsız kayıt
Kodeklerin amacı kaliteden az bir ödün vererek büyük boyutlu video dosyalarını sıkıştırıp daha az boyutlu dosya boyutu oluşturmaktır. Çünkü büyük dosya boyutu bellek, yayın ve yükleme sorunlarına neden olur. Kodekler video/sesi kaydederken sıkıştırır ve oynatırken veya yayınlarken sıkışmış dosyayı açar. Winrar ile dosya sıkıştırma ve açma gibi.
Kodek (coder=kodlayıcı, decoder=kod çözücü) çeşidine göre sıkıştırma sırasında çeşitli algoritmalar kullanılır. Algoritmanın özelliğine ve sıkıştırma değerine göre orijinal video ve sesten hissedilmeyecek veya çok az hissedilecek kayıplar verilir.
Orijinal video/ses kalitesinden ödün vermeden de sıkıştırma imkanı vardır. Nasıl ki winrar ile dosya sıkıştırıp/açıldığında dosyalarda hiç bir kayıp olmuyor, kodekler ile de kayıpsız kayıt yapılabilir.
QP(Quantization Parameter = Niceleme parametresi)
En hızlı sıkıştırma için;
ffmpeg -f gdigrab -i desktop -c:v libx264 -preset ultrafast -qp 0 kayipsiz.mkv
En küçük dosya için;
ffmpeg -f gdigrab -i desktop -c:v libx264 -preset veryslow -qp 0 kayipsiz.mkv
Donanım hızlandırmalı kayıpsız kayıt
ffmpeg -f gdigrab -hwaccel auto -i desktop -c:v libx264 -preset ultrafast -qp 0 kayipsiz.mp4
Hiç yorum yok:
Yorum Gönder