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.