FFMPEG Şu aralar çok fazla kullandığım bir servis oldu önceden videoları bir video edit programına atıp oradan çıktı alırdım ama artık FFMPEG kullanarak tek bir satır ile istediğim formatta çıktı alıyorum.
Öncelikle bir videonun tipini nasıl değiştirirsiniz FFMPEG ile onu göstereceğim aynı şekilde bir görsel tipini nasıl değiştirisiniz bunu göstereceğim.
Daha sonra toplu işlemler nasıl yapılır onu göstereceğim.
İlk Olarak bir görsel nasıl değiştirilir onu göstermek istiyorum.
ffmpeg -i gorsel.jpg gorsel.png
Üstteki kod en basitinden gorsel.jpg adlı görseli gorsel.png olarak değiştirir. Fakat diyelim ki a klasöründeki bir görseli b klasörüne değiştirerek kaydetmek istiyorsunuz. O zamanda şu şekilde kullanacaksınız.
// Öncelikle en dış dizinde olduğunuza emin olmak için şunu yazın "cd /" cd /
Daha sonra görselin yolunu girerek çevirme işlemini gerçekleştirin:
// /Users/arcface/Downloads/ dizininden /Users/arcface/Desktop/ dizinine gorseli değiştirerek aktarıyoruz. ffmpeg -i /Users/arcface/Downloads/gorsel.jpg /Users/arcface/Desktop/gorsel.png
Yukardaki örnekte gösterdiğim şekilde dizin yolunu belirterek a dizinindeki dosyayı b dizinine bu şekilde aktarabilirsiniz.
Peki videoları nasıl çevirebiliriz örneğin mov uzantılı bir video klibi mp4 nasıl çeviririz.
ffmpeg -i video.mov -codec copy video.mp4
Gayet basit ve hızlı şekilde yukarıdaki kod ile işlemi gerçekleştirebilirsiniz. Eğer a klasöründen b klasörüne aktaracaksanız da görseldeki yöntem ile bire bir aynıdır. Dosya yolu girmeniz yeterli.
Geçelim toplu işlemlere benim en çok ihtiyacımın olduğu bölümde bu zaten binlerce görselim var ve hepsini çevirmem gerekiyor ama çevirirkende adlarının eski adlarıyla aynı olması gerekiyor bunu nasıl yaparız.
for i in *.jpg; do name=`echo "$i" | cut -d'.' -f1` echo "$name" ffmpeg -i "$i" "${name}.png" done
Aslında bunun içinde bir for döngüsü kullanıyoruz .jpg uzantılı tüm görselleri döngüye sokuyor bu döngüdeki bu değerleri her dönüşte name değişkenine aktarım ffmpeg kullanıyoruz bu şekilde topluca jpg dosyalarını aynı isimde uzantılarını değiştirerek kaydetmiş oluyoruz.
Peki diyelim ki burada farklı bir dizine kaydetmek istiyorsunuz toplu işlemde o zaman ne yapacaksınız. Tekli işlemdeki mantığı kullanamazsınız çünkü name değişkenine atarken aynı zamanda dizin yolunuda atıyoruz bu sebeple öncelikle görselin olduğu dizine erişmek gerekiyor.
cd /Users/arcface/Downloads/gorseller/
Üsteki şekilde öncelikle terminal’den gorsel dizinine giriyoruz daha sonra
for i in *.jpg do name=`echo "$i" | cut -d'.' -f1` echo "$name" ffmpeg -i "$i" "/Users/arcface/Desktop/yeni_dizin/${name}.png" done
Yukarıdaki şekilde kullanıyoruz böylece bulunduğu dizin görsellerin dizini olduğundan dolayı sadece görsel adını değişkene atıyor ve yeni yolu 2 parametreye atadığımız için yeni dizine kaydetmiş oluyor.
Videolarda nasıl toplu işlem yaparız. Aslında gene aynı mantık sadece ffmpeg kodunu düzenleyeceğiz.
for i in *.mov; do name=`echo "$i" | cut -d'.' -f1` echo "$name" ffmpeg -i "$i" -codec copy "${name}.mp4" done
Gördüğünüz gibi sadece -codec copy kodunu ekledik ve uzantıları değiştirdik işlem bire bir aynı a klasöründen b klasörüne aktarmak içinde üstteki örneğin aynını yapabilirsiniz.