Avi To MP4 Converter

VB.Net ile AVI’den MP4’e Video Dönüştürme

Bir insan neden hazır yapılmışı varken gider kendisi en baştan tekerleği tekrar icat eder ki? Çok basit: çünkü daha iyisini yapabilir. Hazır video dönüştürme programları hem ücretli hem de karmaşık. Oysa bize lazım olan sadece AVI uzantılı videoları MP4’e dönüştürmek ama bir problemimiz var, o da elimizde bir sürü video olması. Sayısını kimse bilmiyor ama toplam 3 TB kadar olduğu tahmin ediliyor. Genelde her bir video, tek bir soru çözümünü içeriyor ve en fazla 10 dakika süren kısa kısa videolar. O soruları kaydeden program da çok ilginç ama onu bir sonraki yazımda bahsedeceğim. Şimdilik sadece dönüştürme işlemine odaklanalım.

Avi To MP4 Converter

Avi To MP4 Converter

  1. Öncelikle yukarıdaki gibi bir form hazırladım. İstersem tek bir dosyayı, istersem de bir klasördeki tüm dosyaları dönüştürmesini istiyorum. İşin can alıcı noktası bu dönüştürme işlemi. Net platformunun böyle bir standart özelliği yok. O yüzden harici program kullanmak gerekiyor. Benim bulabildiğim ücretsiz olup da işe yarayan sadece FFMPEG var. O yüzden ben bu projede FFMEG kütüphanesini kullandım.
  2. İkinci olarak programı sade ve basit tutmak istedim, bu yüzden programa fazla kontrol eklemedim. Mesela sağdaki radyo düğmesine basınca “Dosya Seç” düğmesinin adı “Klasör Seç” oluyor. Soldakine basınca tekrar “Dosya Seç” oluyor. “Dosya Seç” butonun tıklama kodlarına da o düğmenin adı “Dosya Seç” ise dosya açma diyalog kutusu gelsin, yoksa klasör seçme kutusu gelsin diye bir eğer komutu ekledim. “Kayıt Yeri” düğmesine basınca ise sadece hedef klasör seçilebiliyor. Dosya adını otomatik olarak dönüştürelecek dosya adıyla aynı yapıyor, ama uzantısı “.mp4” oluyor.
  3. ve son olarak dönüştürme işlemi: İnternette incelediğim bir kodda adam proje içinde global bir “process” tanımlamış. Böylece FFMEG çalışırken ekrana gelen bazı raporvari bilgileri ekrana yansıtmış. Ama çok farkı olmadığından ben sadece “Shell” komutu ile FFMEG programını bazı parametreler ile çalıştırdım. O program çalışırken ise benim program donuk halde bekliyor.

Sonuç olarak aşağıdaki gibi bir kod bloğu kullandım:

Shell("ffmpeg -i """ & txtFrom.Text & """ -c:v libx264 -preset slow -crf 20 -c:a libvo_aacenc -b:a 128k """ & txtTo.Text & """", AppWinStyle.Hide, True)

Farkettiyseniz “-c:v libx264” ve “-c:a libvo_aacenc” diye bir parametre var. Bunun sayesinde video dönüştürme kodeği olaral H.264 ve ses dönüştürme kodeği olarak AAC kullanıyor. Bu sayade videomuz “.mp4” formatında kayıt olmuş oluyor. “-preset slow” parametresi dönüştürme işleminin kaliteli olması için dönüştürme işleminde acele etme diye söylüyor programa. “-i” ve sonrasında gelen dosya adı input, yani giriş dosyasının adı ve adresidir. Çıkış dosyasının adı ve adresi için ek bir parametreye gerek yok. En sonda ne varsa onu otomatik olarak çıkış dosyası olarak atıyor. “AppWinStyle.Hide” kodu “Shell” ile ayrı bir program gibi çalıştırdığımız programın görünmez bir şekilde çalışmasını sağlıyor. En sondaki “True” parametresi ise “Shell” komutu ile çalıştırılan programın kapanmasını bekle, ondan programdın alt satırındaki kodu işlemeye başlarsın diyor. Yani FFMEG dönüştürme işlemini bitirinceye kadar benim program ile hiç bir işlem yapılamaz hale geliyor.

Vesselam.