Terminalin Görsel Gücü: FFmpeg ile Profesyonel Video İşleme
FFmpeg, multimedya dünyasının "İsviçre Çakısı" gibidir. Grafik arayüzü olmamasına rağmen, birkaç satır kodla devasa video düzenleme yazılımlarının saatlerce uğraştığı işleri saniyeler içinde halledebilirsiniz.
🛠️ Temel Kavramlar ve Kurulum
FFmpeg'in gücünü kullanmadan önce, sisteminizde yüklü olup olmadığını kontrol etmek için terminale şu komutu yazın:
ffmpeg -version
Eğer yüklü değilse, Linux için sudo apt install ffmpeg, macOS için brew install ffmpeg yükleyerek başlayabilirsiniz.
🚀 En Çok Kullanılan "Hayat Kurtarıcı" Komutlar
1. Format Dönüştürme (Hızlı ve Verimli)
Bir videoyu kalitesini bozmadan farklı bir formata dönüştürmek en temel ihtiyaçtır.
ffmpeg -i input.mp4 output.mkv
2. Videodan Sesi Ayıklamak
Sadece sesi almak istiyorsanız, görüntü kanalını (-vn) devre dışı bırakmanız yeterlidir:
ffmpeg -i video.mp4 -vn -ab 192k audio.mp3
-vn: Video yok.-ab: Ses bitrate değeri (192kbps).
3. Videoyu Yeniden Boyutlandırmak (Scaling)
4K bir videoyu hızlıca 720p (HD) formatına çekmek için:
ffmpeg -i input.mp4 -vf scale=1280:720 output_720p.mp4
İpucu: Oranı korumak için genişliği yazıp yüksekliğe
-1verebilirsiniz:scale=720:-1.
4. Videoyu Kesmek ve Kırpmak
Videonun sadece belirli bir kısmını almak için saat:dakika:saniye formatını kullanırız:
ffmpeg -i input.mp4 -ss 00:00:10 -to 00:00:20 -c copy output_cut.mp4
-ss: Başlangıç zamanı.-to: Bitiş zamanı.-c copy: Yeniden kodlama yapmadan (inanılmaz hızlı) kopyalar.
🪄 İleri Seviye Sihirbazlıklar
Videodan Yüksek Kaliteli GIF Yapma
Sıradan bir dönüştürme işlemi GIF'lerin renklerini bozar. Bu komut en iyi paleti oluşturur:
ffmpeg -i input.mp4 -vf "fps=10,scale=480:-1:flags=lanczos" output.gif
Sesi Geciktirme veya Öne Çekme
Ses ve görüntü senkronizasyonu bozuksa, sesi 2 saniye kaydırmak için:
ffmpeg -i input.mp4 -itsoffset 2.0 -i input.mp4 -map 0:v -map 1:a -c copy output.mp4
İki Videoyu Birleştirme (Concatenate)
Aynı özelliklere sahip iki videoyu birleştirmek için önce bir .txt dosyası oluşturun (list.txt):
file 'video1.mp4'
file 'video2.mp4'
Ardından şu komutu çalıştırın:
ffmpeg -f concat -safe 0 -i list.txt -c copy final_video.mp4
💡 Bilmeniz Gereken Önemli Parametreler
| Komut | Açıklama |
-i | Girdi (Input) dosyasını belirtir. |
-r | Kare hızını (FPS) ayarlar. |
-an | Sesi tamamen devre dışı bırakır (Sessiz video). |
-crf | Sabit Oran Faktörü (0-51 arası). 23 varsayılandır, 18 "gözle görülür kayıpsız" demektir. |
FFmpeg dünyası uçsuz bucaksız bir deryadır. Terminalde bu komutları kullanmaya alıştığınızda, ağır video edit programlarını açma ihtiyacınızın azaldığını fark edeceksiniz.
FFmpeg dünyasının derinliklerine inmeye hazır mısınız? İlk bölümde temel ve orta seviye komutları incelemiştik. Şimdi, iş akışınızı bir üst seviyeye taşıyacak, otomasyon ve profesyonel düzenleme odaklı "ileri seviye" yeteneklere göz atalım.
🎭 Filtreler ve Görsel Sihirbazlık
FFmpeg'in en güçlü yanı Filtergraph (filtre grafiği) yapısıdır. Bu yapı, videoyu bir fabrikadaki montaj hattı gibi işlemenizi sağlar.
1. Videoya Logo (Watermark) Ekleme
Videonun sağ alt köşesine şeffaf bir PNG logosu eklemek için:
ffmpeg -i video.mp4 -i logo.png -filter_complex "overlay=W-w-10:H-h-10" output_branded.mp4
W-w-10: Videonun genişliğinden logonun genişliğini ve 10 piksellik boşluğu çıkar (Sağ kenar).H-h-10: Videonun yüksekliğinden logonun yüksekliğini ve 10 piksellik boşluğu çıkar (Alt kenar).
2. Belirli Bir Bölgeyi Bulanıklaştırma (Blur)
Videodaki hassas bir bölgeyi (örneğin bir plaka veya yüz) gizlemek için:
ffmpeg -i input.mp4 -vf "delogo=x=100:y=200:w=150:h=100:show=0" output_blurred.mp4
x, y: Koordinatlar.w, h: Bulanıklaştırılacak alanın genişlik ve yüksekliği.
⚡ Donanım Hızlandırma (Hardware Acceleration)
Eğer NVIDIA veya Intel bir grafik kartınız varsa, işlemciyi (CPU) yormadan çok daha hızlı render alabilirsiniz.
NVIDIA (NVENC) Kullanımı
ffmpeg -i input.mp4 -c:v h264_nvenc -preset slow output.mp4
Normalde kullanılan
libx264yerineh264_nvenckullanmak, render süresini bazen 5-10 kat hızlandırabilir.
📸 Ekran Kaydı ve Yayıncılık
FFmpeg sadece dosya dönüştürmez, canlı veri akışını da yönetir.
Masaüstü Ekranını Kaydetme (Linux için)
ffmpeg -f x11grab -framerate 30 -video_size 1920x1080 -i :0.0 output.mp4
Windows için
x11grabyerine-f gdigrabkullanmalısınız.
Videodan Thumbnail (Küçük Resim) Alma
Videonun tam 5. saniyesinden yüksek kaliteli bir kare yakalamak için:
ffmpeg -i input.mp4 -ss 00:00:05 -vframes 1 output.jpg
📊 Teknik Detaylar ve FFprobe
Bazen bir dosyanın içine bakmanız gerekir. FFprobe, FFmpeg ile birlikte gelen muhteşem bir analiz aracıdır.
Dosya Bilgilerini JSON Olarak Alma
ffprobe -v quiet -print_format json -show_format -show_streams video.mp4
Bu komut, videonun çözünürlüğü, codec bileşenleri, bit hızı ve süresi gibi tüm teknik detayları yazılımların okuyabileceği temiz bir formatta sunar.
🛠️ Pratik Bir İpucu: Toplu İşlem (Batch Processing)
Klasördeki tüm .mov dosyalarını .mp4 yapmak için terminalde şu basit döngüyü kullanabilirsiniz (Linux/macOS):
for i in *.mov; do ffmpeg -i "$i" "${i%.mov}.mp4"; done
🚀 Özet Tablo: İleri Parametreler
| Parametre | Ne İşe Yarar? |
-filter_complex | Birden fazla girdi veya karmaşık filtre zincirleri için kullanılır. |
-map | Hangi ses/video kanalının çıktıya gideceğini seçer (Örn: Çok dilli videolar). |
-shortest | Ses veya video bittiğinde kodlamayı durdurur (Müzik eklerken faydalı). |
-aspect | Görüntü oranını (16:9, 4:3 vb.) zorla değiştirir. |
FFmpeg'in "kara büyü" olarak adlandırılan, genellikle profesyonel yayıncıların ve video mühendislerinin kullandığı daha spesifik ve güçlü özelliklerine göz atalım.
🔊 Ses Mühendisliği ve Manipülasyon
Sadece görüntü değil, ses üzerinde de inanılmaz bir hakimiyet kurabilirsiniz.
1. Ses Normalizasyonu (Loudnorm)
Eğer elinizdeki videonun sesi çok kısık veya dengesizse, EBU R128 standartlarında profesyonel bir ses normalizasyonu uygulayabilirsiniz:
ffmpeg -i input.mp4 -af loudnorm=I=-16:TP=-1.5:LRA=11 output.mp4
I=-16: Hedeflenen entegre ses şiddeti (LUFS).TP=-1.5: Maksimum tepe noktası.
2. Videodan Belirli Bir Ses Kanalını Seçme
Çok dilli bir videonuz (örneğin hem İngilizce hem Türkçe ses barındıran bir MKV) varsa ve sadece Türkçe olanı (genelde 2. kanaldır) almak istiyorsanız:
ffmpeg -i input.mkv -map 0:v:0 -map 0:a:1 -c copy output.mp4
-map 0:v:0: İlk video akışını al.-map 0:a:1: İkinci ses akışını (index 1) al.
⏳ Zaman ve Hız Kontrolü
3. Videoyu Ters Çevirme (Reverse)
Kısa klipler için eğlenceli bir efekt. Not: Bu işlem videoyu RAM'e yüklediği için çok uzun videolarda dikkatli olun.
ffmpeg -i input.mp4 -vf reverse -af areverse output.mp4
4. Slow Motion (Ağır Çekim) ve Hızlandırma
Videoyu 2 kat hızlandırmak için (ses dahil):
ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" -filter:a "atempo=2.0" output.mp4
setpts=0.5*PTS: Görüntü karelerini yarı sürede göster (hızlandır).atempo=2.0: Sesi 2 kat hızlandır.
📽️ Karmaşık Görsel Düzenler
5. Videoları Yan Yana Koyma (Comparison)
İki videoyu (örneğin bir düzenleme öncesi ve sonrası) yan yana tek karede birleştirmek için:
ffmpeg -i video1.mp4 -i video2.mp4 -filter_complex hstack output.mp4
Dikey birleştirme için
vstackkullanabilirsiniz.
6. Video İçinde Video (Picture-in-Picture)
Bir videoyu diğerinin üzerine küçük bir kutu olarak eklemek için:
ffmpeg -i ana_video.mp4 -i kucuk_video.mp4 -filter_complex "overlay=x=20:y=20" output.mp4
📝 Metadeta ve Altyazı Yönetimi
7. Altyazıyı Videoya Gömme (Hardsub)
Altyazı dosyasını (.srt) videonun üzerine kalıcı olarak yazmak (mobil cihazlar için idealdir):
ffmpeg -i input.mp4 -vf "subtitles=altyazi.srt" output.mp4
8. Metadata (Künye) Bilgilerini Düzenleme
Videonun "Başlık", "Yıl" veya "Sanatçı" gibi bilgilerini değiştirmek için:
ffmpeg -i input.mp4 -metadata title="Harika Bir Film" -metadata artist="Senin Adın" -c copy output.mp4
🗜️ İleri Seviye Sıkıştırma: 2-Pass Encoding
Dosya boyutunu hedeflenen bir megabaytta (örneğin tam 50MB) tutarken en yüksek kaliteyi almak istiyorsanız 2 geçişli kodlama yapılır:
1. Geçiş: (Analiz yapar, çıktı dosyası oluşturmaz)
ffmpeg -y -i input.mp4 -c:v libx264 -b:v 1000k -pass 1 -an -f null /dev/null
2. Geçiş: (Analiz verilerini kullanarak videoyu oluşturur)
ffmpeg -i input.mp4 -c:v libx264 -b:v 1000k -pass 2 -c:a aac -b:a 128k output.mp4
🛠️ Gizli Mücevher: -frames:v 1
Videonun sadece ilk karesini veya belirli bir andaki karesini yüksek çözünürlüklü bir fotoğraf olarak kaydetmek için kullanılır:
ffmpeg -i input.mp4 -ss 00:00:15 -frames:v 1 kapak_resmi.png
Özet: Neden FFmpeg?
| Özellik | Geleneksel Yazılımlar (Premiere/Resolve) | FFmpeg |
| Hız | Arayüz yüklemesi ve render uzun sürer. | Komut verildiği an başlar, çok hızlıdır. |
| Otomasyon | Tek tek elle yapılması gerekir. | Script yazılarak 1000 dosya aynı anda işlenebilir. |
| Kaynak Tüketimi | Çok yüksek RAM ve GPU ister. | Minimum kaynakla sunucularda bile çalışır. |
FFmpeg'in "derin sularına" hoş geldiniz. Bu aşamada, sadece dosya dönüştürmenin ötesine geçip, videonun dokusuna müdahale eden ve profesyonel yayın standartlarını belirleyen teknik parametrelere bakacağız.
🏗️ Profesyonel Yayın ve Dağıtım Parametreleri
1. Web Optimizasyonu: -movflags +faststart
Bir videoyu web sitesine yüklediğinizde, videonun tamamı inmeden oynamaya başlaması için "moov atom" bilgisinin dosyanın başına taşınması gerekir.
ffmpeg -i input.mp4 -c copy -movflags +faststart output.mp4
Neden Önemli? Bu parametre olmazsa, tarayıcı videonun sonundaki meta veriyi okuyana kadar kullanıcıyı bekletir.
2. Segmentlere Ayırma (HLS - HTTP Live Streaming)
Videoyu internet üzerinden (Netflix tarzı) parça parça sunmak için .m3u8 playlist dosyası ve .ts parçaları oluşturmak:
ffmpeg -i input.mp4 -c:v libx264 -c:a aac -f hls -hls_time 10 -hls_list_size 0 output.m3u8
-hls_time 10: Her video parçasını 10 saniye yapar.-hls_list_size 0: Tüm parçaları listede tutar.
🎨 İleri Filtreleme ve Görsel Denetim
3. Dinamik Metin Ekleme (Drawtext)
Videonun üzerine gerçek zamanlı saat, kare sayısı veya herhangi bir yazı yazdırmak:
ffmpeg -i input.mp4 -vf "drawtext=text='Kamera 01':x=10:y=10:fontsize=24:fontcolor=white:shadowcolor=black:shadowx=2:shadowy=2" output.mp4
Sihirli Parametre: Eğer videonun üzerine zaman kodu (timecode) eklemek isterseniz:
drawtext="text='%{pts\:hms}':x=w-100:y=h-50:fontcolor=white"
4. Yeşil Ekran (Chroma Key) Kaldırma
Arka planı yeşil olan bir videoyu şeffaf hale getirip başka bir arka planla birleştirmek:
ffmpeg -i on_plan.mp4 -i arka_plan.mp4 -filter_complex "[0:v]colorkey=0x00FF00:0.3:0.2[ckout];[1:v][ckout]overlay" output.mp4
0x00FF00: Hedeflenen yeşil renk kodu.0.3: Benzerlik payı.
⚙️ Teknik Uyumluluk ve Renk Uzayı
5. Piksel Formatı Zorlama (-pix_fmt)
Bazı eski cihazlar veya QuickTime, her MP4 dosyasını açamaz. En uyumlu format yuv420p formatıdır:
ffmpeg -i input.mp4 -c:v libx264 -pix_fmt yuv420p output.mp4
6. Video ve Sesin Senkronizasyonunu Sağlamak
Eğer ses ve görüntü arasında kayma varsa, FFmpeg'e ses karelerini görüntüye göre yeniden hizalamasını söyleyebilirsiniz:
ffmpeg -i input.mp4 -af "aresample=async=1" output.mp4
🧪 Analiz ve Test Parametreleri
7. Video Kalitesini Ölçme (SSIM / PSNR)
Bir sıkıştırma işleminin orijinal videoya göre ne kadar kalite kaybı yaşattığını matematiksel olarak görmek için:
ffmpeg -i orijinal.mp4 -i sikistirilmis.mp4 -filter_complex ssim -f null -
8. Boş (Test) Video Üretme
Kendi test videonuzu oluşturmak için (Örn: 5 saniyelik, 1080p, 25fps renkli bar):
ffmpeg -f lavfi -i testsrc=duration=5:size=1920x1080:rate=25 output.mp4
🛠️ Hayat Kolaylaştıran Diğer Parametreler
| Parametre | Fonksiyonu |
-t | Süre belirtir (Örn: -t 30 sadece ilk 30 saniyeyi işler). |
-to | Bitiş zamanını belirtir (Örn: -to 00:05:00). |
-vol | Ses seviyesini değiştirir (Örn: -vol 512 sesi iki katına çıkarır). |
-an / -vn | Sesi kaldır (-an) / Videoyu kaldır (-vn). |
-threads | İşlemci çekirdek kullanımını ayarlar (Örn: -threads 4). |
-y | Çıktı dosyası varsa sormadan üzerine yazar. |
💡 "Süper Komut" Örneği
Aşağıdaki komut; videoyu NVIDIA kartıyla hızlandırır, 1080p'ye ölçekler, logo ekler, sesini normalize eder ve web için faststart yapar:
ffmpeg -hwaccel nvdec -i video.mp4 -i logo.png \
-filter_complex "[0:v]scale=1920:1080[v];[v][1:v]overlay=10:10" \
-c:v h264_nvenc -preset slow -c:a aac -af loudnorm \
-movflags +faststart output_final.mp4
FFmpeg’in artık "mühendislik" seviyesindeki özelliklerine, yani bir videonun piksellerinden veri akış mimarisine kadar uzanan derin yeteneklerine dalıyoruz. İşte daha spesifik ve teknik özellikler:
🏗️ Multimedya Mimarisi ve Akış Kontrolü
1. Video Mozaik (Thumbnail Sheet) Oluşturma
Bir videonun genel içeriğini tek bir resimde (örneğin 4x4 bir ızgara şeklinde) görmek için:
ffmpeg -i input.mp4 -vf "select=not(mod(n\,100)),scale=320:180,tile=4x4" -frames:v 1 output.png
select=not(mod(n\,100)): Her 100 kareden birini seçer.tile=4x4: Seçilen kareleri 4 sütun ve 4 satır halinde birleştirir.
2. Gelişmiş Stream Eşleme (-map)
Bir dosyanın içinde 5 farklı dil ve 3 farklı altyazı varsa, tam olarak neyi dışarı aktaracağınızı kontrol edebilirsiniz:
ffmpeg -i input.mkv -map 0:v:0 -map 0:a:2 -map 0:s:0 -c copy output.mp4
0:v:0: Birinci girişin, birinci video akışı.0:a:2: Birinci girişin, üçüncü ses akışı (index 0'dan başlar).0:s:0: Birinci girişin, birinci altyazı akışı.
🔊 Profesyonel Ses İşleme
3. Ses Sıkıştırıcı (Compressor) ve Equalizer
Sesin çok yüksek kısımlarını baskılayıp düşük kısımlarını yükseltmek (Dinamik aralığı daraltmak) için:
ffmpeg -i input.mp3 -af "acompressor=threshold=-21dB:ratio=4:attack=5:release=50" output.mp3
Belirli bir frekansı (örneğin 1000Hz) 10 desibel düşürmek için:
ffmpeg -i input.mp3 -af "equalizer=f=1000:width_type=h:width=200:g=-10" output.mp3
🌐 Canlı Yayın ve Ağ Protokolleri
4. RTMP ile Canlı Yayın Gönderme
YouTube veya Twitch gibi platformlara doğrudan terminalden yayın yapmak için:
ffmpeg -re -i input.mp4 -c:v libx264 -preset veryfast -b:v 3000k -maxrate 3000k -bufsize 6000k -pix_fmt yuv420p -g 50 -c:a aac -b:a 128k -f flv rtmp://live.twitch.tv/app/YAYIN_ANAHTARI
-re: Videoyu gerçek zamanlı hızda okur (yayın için kritiktir).-g 50: Keyframe aralığını (GOP) ayarlar.
5. UDP Üzerinden Yerel Ağ Yayını
Aynı ağdaki başka bir bilgisayara (VLC ile izlenebilir) veri basmak:
ffmpeg -i input.mp4 -f mpegts udp://192.168.1.50:1234
🎨 Görüntü İyileştirme ve Restorasyon
6. Parazit Giderme (Denoising)
Grenli veya karlı görüntüleri temizlemek için hqdn3d filtresi kullanılır:
ffmpeg -i input.mp4 -vf "hqdn3d=1.5:1.5:6:6" output.mp4
7. HDR'dan SDR'a Dönüştürme (Tone Mapping)
HDR videoların renklerinin SDR ekranlarda soluk görünmesini engellemek için:
ffmpeg -i hdr_input.mp4 -vf "zscale=t=linear:npl=100,format=gbrpf32le,zscale=p=bt709,tonemap=tonemap=reinhard:desat=0,zscale=t=bt709:m=bt709:r=tv,format=yuv420p" output_sdr.mp4
🕵️ Bitstream Filtreleri (BSF)
Dosyayı yeniden kodlamadan, sadece veri paketlerinin başlıklarını (header) değiştirmek için kullanılır. Örneğin, bir MP4 dosyasındaki H.264 verisinden "aud" (Access Unit Delimiter) eklemek/çıkarmak:
ffmpeg -i input.mp4 -c copy -bsf:v h264_mp4toannexb output.ts
🚀 Parametre Referans Kartı
| Parametre | Açıklama |
-re | Girişi gerçek zamanlı (real-time) hızda okur. |
-stream_loop -1 | Giriş dosyasını sonsuz döngüye sokar (Canlı yayın testleri için). |
-discard | Belirli kareleri (örneğin sadece B-frame'leri) atmayı sağlar. |
-copyts | Orijinal zaman damgalarını (timestamps) korur. |
-f null - | Çıktı dosyası oluşturmadan komutu çalıştırır (Hata ayıklama ve hız testi için). |
FFmpeg ile artık sadece video düzenlemiyor, adeta bir multimedya sunucusu yönetiyorsunuz.
Yorumlar