FFmpeg Nedir? Nasıl Kullanılır?

FFmpeg, bir çok platformda kullanılabilen ses1 ve görüntü2 kaydı, dönüştürme, yayın işlemlerini gerçekleştirmesi sağlayan açık kaynak geliştirilen bir multimedya uygulamasıdır.

AA

Decode, encode, transcode, mux, demux, stream3, filter ve play başta olmak üzere bir çok işlem gerçekleştirmeye olanak sunan FFmpeg, libavcodec, libavutil, libavformat, libavfilter, libavdevice, libswscale ve libswresample gibi paketleri de işlenebilir olarak barındırmaktadır. Oldukça geniş bir codec kütüphanesi sayesinde herhangi bir video/ses formatını başka bir video/ses formatına kolaylıkla dönüştürebilmektedir. Desteklediği dosya formatları, streaming protokolleri4 sayesinde yaygın bir kullanımı olan ffmpeg Linux, macOS, Windows ve diğer bir çok işletim sistemi ve konfigürasyonda sorunsuz çalışabilmekte5.

FFmpeg temel kullanımı şu şekilde:

ffmpeg -i eski-dosya-adi yeni-dosya-adi
ffmpeg -i eski-dosya-adi -c:v libx264 -preset slow -profile:v high -crf 18 -coder 1 -pix_fmt yuv420p -movflags +faststart -g 30 -bf 2 -c:a aac -b:a 384k -profile:a aac_low yeni-dosya-adi

FFmpeg Kurulumu

Video işlemleri, formatlar arası dönüştürme, videodan ses parçası alma, kesme, görüntü alma gibi bir çok ihtiyaca çözüm olarak kullanılabilecek ffmpeg ile ilgili örnek dönüştürme işlemlerinin öncesinde kurulumun nasıl yapılabileceğine bakalım. Yükleme işlemini macOS ve Ubuntu için anlatacağım ve kullanım için konsol üzerinden ilerleyeceğim. PHP.exe ve diğer kullanım yöntemleriyle6 ilgili gerekli ihtiyaç olursa ayrıca bir yazı ile konuyu genişletebilirim.

FFmpeg yükleme sayfasında bir çok platform için sunulan derlenmiş paketler mevcut. Yine bu sayfa üzerinden ffserver, ffprobe, ffplay dağıtımlarını da edinebilirsiniz. macOS için indirme işleminde Homebrew paket yöneticisini kullanabiliriz.

brew install ffmpeg

Ubuntu için maalesef ffmeg’in resmi bir paketi bulunmuyor. Bu nedenle indirme işlemini Personal Package Archives (ppa) üzerinden gerçekleştireceğiz. İlk olarak mc3man ilişkilendimesini gerçekleştirmeliyiz7. Ardından onaylarla beraber ppa üzerinden paket yönetimi gerçekleştirebileceğiz. Takip edilmesi gereken komutlar şu şekilde:

sudo add-apt-repository ppa:mc3man/trusty-media
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install ffmpeg

FFmpeg Kullanımı

Aşağıda farklı formatlar arasında dönüştürme işlemlerine yönelik örnekler iletiyorum. Elbette ffmpeg kullanımına dair çok daha geniş içeriklerden faydalanabilirsiniz. Her zaman olduğu gibi öncelikli olarak bilgi kaynağımız komuta ait manuel. Bu bilgilere man ffmpeg üzerinden ulaşabilirsiniz.

Videoları Birleştirmek

Elimizde parçalar halinde onlarca video olduğunu düşünelim. Tek bir komutla bu videoları belirttiğimiz sıralamayla birleştirip tek bir video halinde sunabiliriz. Bu aşamada dikkat etmemiz gereken kaynak olarak bir metin dosyası oluşturmak. Unutmadan, metin dosyası içerisindeki sıralamaya göre dosya oluşturma işlemi gerçekleştirilecektir.

# Manzara Videoları
file '/path/to/dosya-1.mp4'
file '~/videolar/dosya-2.avi'

# Konuşmalar
file '../dosya-3.mov'

Yukarıda içeriğini gördüğümüz metin dosyamızın adı media.txt olsun ve bu içerikte yer alan videolar birleştirilerek final.mp4 olarak sunulsun8.

ffmpeg -f concat -i media.txt -c copy final.mp4

Dosya Özelliklerini Öğrenme

Yukarıdaki örnek üzerinden devam edelim ve final.mp4 dosyamıza ait metadata değerlerini dökelim.

ffmpeg -i final.mp4

Görselleri Video’ya Dönüştürmek

ffmpeg -f image2 -i gorsel-1.jpg video.mp4

Video Dosyasını Görsellere Dönüştürmek

Desteklenen formatlar: JPG, PGM, PPM, PAM, PGMYUV, JPEG, GIF, PNG, TIFF ve SGI

ffmpeg -i video.mp4 image%d.jpg

Videodan Ses Ayrıştırmak ve MP3 Olarak Kayıt Etmek

Yine aynı örnek üzerinden devam ediyor ve final.mp4 dosyasından sesi ayıştırarak ses.wav olarak kayıt ediyorum.

ffmpeg -i final.mp4 -vn -ar 44100 -ac 2 -ab 192 -f mp3 ses.wav

Videoya Ses Gömme

ffmpeg -i final.wav -i video.mp4 final.mpg

WAV’dan MP3’e Dönüştürme

Az önce videodan ayrıştırdığımız ve wav olarak kayıt ettiğimiz dosyayı bu defa mp3 formatına dönüştürelim ve ses2.mp3 olarak kayıt edelim.

ffmpeg -i ses.wav -vn -ar 44100 -ac 2 -ab 192 -f mp3 ses2.mp3
ffmpeg -i ses.mp3 ses-2.wav

Videoyu GIF’e Dönüştürme

mp4 dosyasını sıkıştırılmamış hareketli gif dosyasına çevirmek istersek standart kullanım işimizi görecektir.

ffmpeg -i final.mp4 gif-dosyasi.gif

PNG’yi JPG’e Dönüştürme

FFmpeg’in yetenekleri sadece hareketli görüntülerle ve seslerle sınırlı değil elbette. Örneğin bir png dosyasını da kolaylıkla jpg olarak dönüştürmemiz mümkün. Elbette -i parametresi Duration: N/A, bitrate: N/A olarak dönecektir.

ffmpeg -i final.png goruntu.jpg

Videoya Watermark Yerleştirme

Aşağıdaki komut içerisinde 30:50 değerleri X:Y olarak görselin pozisyonunu ifade etmekte. Videonun genişlik ve yüksekliğine bağlı olarak logonun yerleştirileceği alanı özelleştirebilirsiniz.

ffmpeg -i video.mp4 -vf "movie=logo.png [watermark]; [in][watermark] overlay=30:50 [out]" final.mp4

MOV’dan MP4’e Dönüştürme

Bir çok video formatını benzer komut üzerinden dönüştürmek mümkün. Ben örnek olarak sıklıkla ihtiyaç duyduğum *.mov dosyasının nasıl mp4 formatına dönüştürüleceğine değineceğim.

ffmpeg -i video.mov final.mp4

Daha farklı örnekler için FFmpeh wiki beybut.com > ffmpegde işlevsel komutlar sayfalarını inceleyebilirsiniz. Youtube ve diğer video paylaşım siteleri için encode detaylarını ise How to Encode Videos for YouTube and other Video Sharing Sites sayfasından takip edebilirsiniz.