V-edit video edit programı
python ile ffmpeg komutlarını işleten ve bir kaç formatta video, mp3 ve ogg ses dosyalarının dönüşümünü yapabilen bir program yazdım ve adını V-edit koydum...
programın şuanki görünümü bu şekilde, video kesme ve çözünürlük işleminin yanında görüntü birleştirme işlemi ve birkaç video formatını daha desteklemeyi hedefliyorum...
programın kodlarıda şunlar:
#!/usr/bin/env python
# -*- coding: utf-8 -*
from __future__ import division
import os
from Tkinter import *
import tkFileDialog,tkMessageBox
import codecs,time
# V-edit bir audio ve video converter programıdır.
# project by sedataym
# bu proje hala beta aşamasında olup çeşitli hatalar barındırmaktadır.
# v-edit ffmpeg programının son kullanıcı için daha kolay ve hatasız kullanımını hedeflemektedir..
pencere=Tk()
pencere.geometry("490x350+15+100")
pencere.title(" V-edit")
metin =Text(bg="white", height=5, width=50, font="Arialblack 12 bold", fg="black")
metin.place(relx = 0.025, rely = 0.70)
b = IntVar()
b.set(0)
Vkes = Checkbutton(text="Video Kes:", variable=b)
Vkes.place(relx = 0.01, rely = 0.15)
girisy = Entry(width=3, bg="white")
girisy.place(relx = 0.01, rely = 0.25)
girisy.insert(END, "sa")
girisy1 = Entry(width=3, bg="white")
girisy1.place(relx = 0.09, rely = 0.25)
girisy1.insert(END, "dk")
girisy2 = Entry(width=3, bg="white")
girisy2.place(relx = 0.17, rely = 0.25)
girisy2.insert(END, "sn")
kelime = Label(text=":", fg="black")
kelime.place(relx = 0.070, rely = 0.25)
kelime1 = Label(text=":", fg="black")
kelime1.place(relx = 0.15, rely = 0.25)
cikis = Entry(width=3, bg="white")
cikis.place(relx = 0.01, rely = 0.37)
cikis.insert(END, "sa")
cikis1 = Entry(width=3, bg="white")
cikis1.place(relx = 0.09, rely = 0.37)
cikis1.insert(END, "dk")
cikis2 = Entry(width=3, bg="white")
cikis2.place(relx = 0.17, rely = 0.37)
cikis2.insert(END, "sn")
kelimex = Label(text=":", fg="black")
kelimex.place(relx = 0.070, rely = 0.37)
kelimex1 = Label(text=":", fg="black")
kelimex1.place(relx = 0.15, rely = 0.37)
kelimex3 = Label(text=u"başlama süresi")
kelimex3.place(relx = 0.01, rely = 0.2)
kelimex4 = Label(text=u"bitiş süresi")
kelimex4.place(relx = 0.01, rely = 0.315)
# bu fonsiyon video kesme başlangıç ve bitiş zamanlarını hesaplamaktadır.
def kesx():
global sure
global bas
bas1 = int(girisy.get())
bas2 = int(girisy1.get())
bas3 = int(girisy2.get())
bit1 = int(cikis.get())
bit2 = int(cikis1.get())
bit3 = int(cikis2.get())
bas = ((bas1*3600)+(bas2*60)+bas3)
bit = ((bit1*3600)+(bit2*60)+bit3)
sure = "%s" %(bit-bas)
sec()
time.sleep(1)
dondur()
def sec(): #kesme işlemi yapılıp yapılamayacağı konrol ediliyor
global kes
if b.get() == 1:
kes = "-ss "+"%s" %(bas)+" -t "+"%s" %(sure)+" "
else:
kes= " "
def kaydet():
if b.get() == 1:
kesx()
else:
sec()
time.sleep(1)
dondur()
menu = Menu(pencere)
pencere.config(menu=menu)
def default():
global coz #video çözünürlüğü ayarlanıyor..
coz = " "
def c128x96():
global coz
coz = " -s 128x96"
def c2560x2048():
global coz
coz = " -s 2560x2048"
def c176x144():
global coz
coz = " -s 176x144"
def c352x288():
global coz
coz = " -s 352x288"
def c704x576():
global coz
coz = " -s 704x576"
def c800x600():
global coz
coz = " -s 800x600"
def c1024x768():
global coz
coz = " -s 1024x768"
def c1600x1200():
global coz
coz = " -s 1600x1200"
def c2048x1536():
global coz
coz = " -s 2048x1536"
def dvdmpg():
global uzan
uzan = "dvd.mpg"
def dvdavi():
global uzan
uzan = "dvd.avi"
def vcdmpg():
global uzan
uzan = "vcd.mpg"
def vcdavi():
global uzan
uzan = "vcd.avi"
def mp3():
global uzan
uzan = "mp3"
def ogg():
global uzan
uzan = "ogg"
def ucgp():
global uzan
uzan = "ucgp"
def flv():
global uzan
uzan = "flv"
def ac():
global giris1
giris = tkFileDialog.askopenfilename()
giris1 = giris
def vcd():
os.system("vcdxrip -C /dev/cdrom -p -v --filename-encoding=iso-8859-9") #VCD filmleri mpg formatında bilgisayara kaydediyor...
def dondur(): #ffmpeg formül ve parametreleri...
metin.delete(1.0, END)
time.sleep(2)
try:
if uzan == "dvd.mpg":
trk=os.system("ffmpeg -i"+" " + '"%s"' %(giris1) +" "+"-target ntsc-dvd"+coz+kes+"default"+"."+uzan)
elif uzan == "ucgp":
trk=os.system("ffmpeg -i"+" "+'"%s"' %(giris1) +coz+kes+"-vcodec h263 -acodec mp3 -ac 1 -ar 8000 -ab 32 -y default.3gp")
elif uzan == "mp3":
trk=os.system("ffmpeg -i"+" "+'"%s"' %(giris1)+" "+"-f mp3 -vn -acodec copy "+kes+"default.mp3")
elif uzan == "flv":
trk=os.system("ffmpeg -i"+" "+'"%s"' %(giris1)+" "+"-ar 22050 -ab 32 -f flv"+coz+kes+"default.flv")
elif uzan == "dvd.avi":
trk=os.system("ffmpeg -i"+" " + '"%s"' %(giris1) +" "+"-target ntsc-dvd"+coz+kes+"default"+"."+uzan)
elif uzan == "vcd.avi":
trk=os.system("ffmpeg -i"+" " + '"%s"' %(giris1) +" "+"-f avi -vcodec mpeg4 -acodec copy"+coz+kes+"default"+"."+uzan)
elif uzan == "vcd.mpg":
trk=os.system("ffmpeg -i"+" " + '"%s"' %(giris1) +" "+"-target ntsc-vcd"+coz+kes+"default"+"."+uzan)
elif uzan == "ogg":
trk=os.system("ffmpeg -i"+" "+'"%s"' %(giris1)+" "+"-acodec vorbis -aq 20 -ar 22050 -ab 128k "+kes+"default.ogg")
except NameError:
metin.delete(1.0, END)
metin.insert(END, u"lütfen bir kayıt uzantısı ve çözünürlük seçiniz...")
donbtn = Button(text="dosya ac", command=ac)
donbtn.place(relx = 0.01, rely = 0.01)
acbtn = Button(text="kaydet", command=kaydet)
acbtn.place(relx = 0.18, rely = 0.01)
vcdbtn = Button(text="VCD'den al", command=vcd)
vcdbtn.place(relx = 0.32, rely = 0.01)
dosya = Menu(menu, tearoff=0)
menu.add_cascade(label="Dosya",menu=dosya)
dosya.add_command(label="Aç", command = ac)
dosya.add_command(label="Çıkış",command = pencere.quit)
dosya2 = Menu(menu,tearoff=0)
menu.add_cascade(label="Kaydet",menu=dosya2)
dosya2.add_command(label="Kaydet", command = dondur)
dosya3 = Menu(menu,tearoff=0)
menu.add_cascade(label=u"kayıt uzantısı",menu=dosya3)
dosya3.add_command(label="flv", command=flv)
dosya3.add_command(label="rm")
dosya3.add_command(label="mp3", command=mp3)
dosya3.add_command(label="ogg", command=ogg)
dosya3.add_command(label="3gp", command=ucgp)
mpg = Menu(dosya3,tearoff=0)
dosya3.add_cascade(label="mpg",menu=mpg)
mpg.add_command(label="DVD mpg", command = dvdmpg)
mpg.add_command(label="VCD mpg", command = vcdmpg)
avi = Menu(dosya3,tearoff=0)
dosya3.add_cascade(label="avi",menu=avi)
avi.add_command(label="DVD avi", command = dvdavi)
avi.add_command(label="VCD avi", command = vcdavi)
dosya4 = Menu(menu,tearoff=0)
menu.add_cascade(label=u"çözünürlük",menu=dosya4)
dosya4.add_command(label="default", command=default)
dosya4.add_command(label="128x96", command=c128x96)
dosya4.add_command(label="176x144", command=c176x144)
dosya4.add_command(label="352x288", command=c352x288)
dosya4.add_command(label="704x576", command=c704x576)
dosya4.add_command(label="800x600", command=c800x600)
dosya4.add_command(label="1024x768", command=c1024x768)
dosya4.add_command(label="1600x1200", command=c1600x1200)
dosya4.add_command(label="2048x1536", command=c2048x1536)
dosya4.add_command(label="2560x2048",command=c2560x2048)
mainloop()
dosyanın orjinalide ektedir.
- 1096 okunma




istihza
Re: V-edit video edit programı
Linuxcu, eğer Pardus-2008 kullanıyorsan bu programı 2008 altında kullanamazsın. Çünkü depolarda tkinter paketi yok!... O yüzden çalışmazsa şaşırma...
istihza
Re: V-edit video edit programı
Sedataym, eline sağlık. Henüz denemeyemedim, ama denedikten sonra eğer bir problemi yoksa bunu pardus-2007 depomuza alalım mı?
sedataym
Re: V-edit video edit programı
pardus deposuna katkıda bulunmak beni çok mutlu eder...
istihza
Re: V-edit video edit programı
"pardus-2007" nereden çıktı yahu!... "users-2007" diyecektim...
enki
Re: V-edit video edit programı
V-edit yerine V - düzelt değiştir yap kes vsr gibi bir isim daha sıcak gelirdi bana
sedataym
Re: V-edit video edit programı
Haklısın enki türkçe bir isim daha güzel olabilir bencede... Burada kulağa hoş gelen türkçe bir ismi hep birlikte tartışabiliriz.
(ben bir isim bulana kadar V-edit demeye devam edeceğim)
V-edit programını birkaç gündür test ediyorum ve genel hatlarıyla şuan desteklediği medya dosyaları arasında en az kayıpla çevrim ve kesme işlemi yapabiliyor...
desteklediği formatlar ise ilk etapta şunlar
--> avi,mpg,mwv,3gp gibi formatlardan flv formatına dönüşüm
)
-->avi,mpg,mwv,flv den 3gp ye dönüşüm(nokia telefonlarda denemedim ama bilgisayarda gayet iyi sonuç veriyor.
--> avi,mpg,mwv,flv den mov formatına dönüşüm
--> avi,mpg,mwv,flv,wma videolarını mp3 formatına dönüştürebiliyor (yani videodan sadece sesi alıyoruz.)
-->wma,mp3 formatlarını ogg formatına seste kayıp olmadan dönüştürme(ogg ye dönüşen ses dosyalarının boyutuda hatrı sayılır oranda düşüyor ve ses kalitesinde hissedilir bir değişim olmuyor
-->flv,mpg,3gp,mov formatlarını avi formatına dönüştürme
-->flv,avi,3gp,mov formatlarını vcd ve dvd olmak üzere iki kalitede dönüştürebilme imkanı ve PAL, NTSC görüntü seçeneklerini ayarlayabilme
ayrıca dönüştüreceğimiz video dosyalarında 10 farklı seçenek ile çözünürlüğünü ayarlayabilme imkanı sunuyor.
programdaki video kes bölümü ile videomuzun istediğimiz bir bölümünü rahatlıkla kesip kırpabiliyoruz.
VCD'den al özelliği ile vcd filmlerimizi bilgisayara mpg formatında tek tuş ile kaydedebiliyoruz.
kısa zaman içinde video birleştirme özelliğinide V-edit'e kazandırmayı ve desteklediği formatları arttırmayı planlıyorum...
Fakat program şu hali ilede gayet kullanışlı bir hal aldı...
programın kullanımı gayet basit :
dosya ac'tan veya dosya>aç yollarını takip ederek dönüşüm yapacağımız medya dosyamızı seçiyoruz..
sonrasında dönüşüm yapmak istediğimiz kayıt uzantısını seçiyoruz.
eğer dönüşüm yapacağımız dosya bir görüntü dosyası ise bir çözünürlük seçiyoruz.
mpg formatına döüşüm yapacaksak görüntü sekmesinden NTSC veya PAL seçeneklerinden birini seçiyoruz ( diyer uzantılar için gerekli değil)
eğer videonun sadece belli bir bölümünü almak istiyorsak video kes bölümünü seçiyoruz, başlangıç ve bitiş sürelerini saat, dakika ve saniye olarak giriyoruz ve en son kaydet butonuna basıp arkamıza yaslanıyoruz
programın şuanki en bariz sorunu kaydet butonuna bastıktan sonra program dönüşüme başladığında dönüşüm bitene kadar programı kapatamıyoruz. bütün butonlar işlevsizleşiyor dönüşüm bittiğinde herşey eski haline dönüyor.
programın son hali ektedir pardus'ta python-tk paketinin olmaması büyük bir sorun ama deneyip sonuçları bildiren arkadaşlar olursa çok sevinirim...
istihza
Re: V-edit video edit programı
Sedataym,
Donma sorunu için öncelikle thread modülünü içe aktar.
Daha sonra şöyle bir fonksiyon tanımla:
Ondan sonra acbtn'yi şöyle yap:
acbtn = Button(text="kaydet", command=katman)Yani "command=kaydet" yerine "command="katman" olacak.
Dosyanın son hali ekte.
sedataym
Re: V-edit video edit programı
V-edit ses ve görüntü işleme programındaki son gelişmeler:
V-edit'in gün geçtikçe daha işlevsel bir hal alabilmesi için program üzerinde çalışmaya devam ediyorum.

son olarak programın arayüzünde düzenlemeye gittim ve yeni özellikler kazandırabilmek için çalıştım.
yeni eklenen özellikler şunlar:
En yeni ve önemli özellik ses ve video dosyalarını birleştirme özelliği (yanlızca mpg ve mp3 dosyalarını ard arda ekleyebiliyor)
seçilen özellikleri text aracına yazıyor.
wmv ve XvİD formatları yeni eklendi.
istihza hocamın yardımıyla donma sorunu çözülmüş oldu ve bu programa aynı anda birbirinden bağımsız birçok işlem yapabilme özelliğini getirdi.
programın son arayüzü şu şekilde:
istihza
Re: V-edit video edit programı
Selamlar,
Güzel olmuş, yalnız görüntü olarak Pardus'ta düğmeler birbirine çok yakın görünüyor. Ayrıca üst menüdeki "görüntü" menüsü aşağıya kaymış.
istihza
Re: V-edit video edit programı
Bu arada, tabii program içinde bazı uyarılar da versen iyi olur bence. Örneğin:
"çözünürlük/uzantı/vb.." seçmediniz!
"İşlem başladı"
"İşlem başarıyla tamamlandı"
"İşlem başarısız oldu"