FFMPEG İle Toplu İşlemler resim, video vb.

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.

Yazar: arcface

Bilişim Teknolojileri alanıyla başlayan merakımı devam ettirmem neticesinde tam donanımlı web geliştiricisi olarak bir kariyer edindim. Bu güne kadar bir çok kişi ve kurumun kurumsal web sitesini hayata geçirdim. Bunların arasında yeni açılan kurumlar kadar köklü kurumlarda yer aldı. İşi sadece web sitesi kurup bırakmakla sınırlamak istemediğim için içerik editörlüğü de dahil olmak üzere reklam yönetimine kadar her alana el uzattım ve bilgi edindim. Şu an yaptığım her işin en uç noktasından reklam planlamasına kadar tüm adımlarını kendim gerçekleştiriyorum. Herhangi bir kuruma bağlı olmadan çalıştığım için bütçe dostu fiyatlarla kişi ve kurumlara çözümler üretiyorum.