AnimeManganTR
Would you like to react to this message? Create an account in a few clicks or log in to continue.

Giriş Seviyesinde Avisynth

4 posters

Aşağa gitmek

Giriş Seviyesinde Avisynth Empty Giriş Seviyesinde Avisynth

Mesaj tarafından gezz+ C.tesi 23 Mayıs - 11:13

Avisynth'in çalışma mantığı çok basit, giriş video dosyasını fps
değeriyle birlikte belirtiyorsunuz, sonraki kodlarda istediğiniz filtreleri
uygulayarak sonuç görüntüyü elde ediyorsunuz. bu filtreler yeniden
boyutlandırma olabilir, parlaklık kontrast düzeltme, keskinleştirme, logo
yerleştirme, kırpma, altyazı yerleştirme,gürültü temizleme vesayre herşey
olabilir. bunların hepsi aynı şekilde ele alınmaktadır.


Ve de avisynth, video görüntüsünün her karesini bir bmp resmi gibi,
yani her pikselin ayrı ifade edildiği kayıpsız veri şeklinde işlemektedir. Yani
örneğin, “xvid” codec’le kodlanmış bir video görüntüsünün “directshow” ve ya
benzeri bir decoder’le çözülüp hiçbir codec verisi içermeyen saf görüntü haline
getirilmesi gerekmektedir.


------------------------------------------------------------

import("C:\Program
Files\Winnydows\XviD4PSP5\dlls\AviSynth\functions\VideoFunctions.avs")


loadplugin("C:\Program
Files\Winnydows\XviD4PSP5\dlls\AviSynth\plugins\ColorMatrix.dll")


DirectShowSource("I:\$$visual media\anime\eve no
jikan\eve no jikan 4.mkv", fps=23.976, convertfps=true)


AutoYV12()
ColorMatrix()
Tweak(sat=1.4)
Tweak(bright=2)
lanczos4resize(1920,1080)

LoadPlugin("C:\Program
Files\Winnydows\XviD4PSP5\dlls\AviSynth\plugins\frfun7.dll")

LoadPlugin("C:\Program
Files\Winnydows\XviD4PSP5\dlls\AviSynth\plugins\MaskTools.dll")

LoadPlugin("C:\Program
Files\Winnydows\XviD4PSP5\dlls\AviSynth\plugins\WarpSharp.dll")

LoadPlugin("C:\Program
Files\Winnydows\XviD4PSP5\dlls\AviSynth\plugins\mt_masktools.dll")

LoadPlugin("C:\Program
Files\Winnydows\XviD4PSP5\dlls\AviSynth\plugins\RemoveGrain.dll")

Import("C:\Program
Files\Winnydows\XviD4PSP5\dlls\AviSynth\plugins\LimitedSharpenFaster.avs")

LoadPlugin("C:\Program
Files\Winnydows\XviD4PSP5\dlls\AviSynth\plugins\MT.dll")


MT("""
FRFun7(3, 150,100)
limitedsharpenfaster(1)
""",threads=2,splitvertical=true)


----------------------------------------------------------------------

yukarıda gördüğünüz örnek avisynth kodunda ilk satırda
temel video fonksiyonları(boyutlandırma, parlaklık/kontrast) kütüphanesi
yükleniyor,


İkinci satırda renk uzayı fonksiyonları kütüphanesi
yükleniyor. Renk uzayı dediğimiz şey piksellerin renklerinin ifade edilme
şekli. Örneğin “RGB” yani “red gren blue” denilen en temel yöntemde kırmızı
yeşil ve mavinin farklı parlaklık değerleri bir araya getirilerek renkler
oluşturuluyor. Buradaki işlevinin ne
olduğunu açıklayabilecek tam bir bilgiye sahip değilim, ama bazı filtreler
yalnızca belli renk uzaylarında çalışıyor, bu yüzden o filtreleri uygulamadan
önce renk uzayı dönüştürmesi yapmamız gerekecek. Buradaki “AutoYV12()”
fonksiyonu 3. Satırda “directshow” isimli decoder’dan çağırdığımız video
görüntüsünün renk uzayını YV12’ye çeviriyor.


Üçüncü satırdaki kod “DirectShow” isimli decoder’a dosya
ismi belirtilerek video görüntüsü çağırılıyor. Decoder bu dosyayı çözerek her
kareyi sıkıştırılmamış bir biçimde, yani video izlerken oynatıcı ekranındaki
gibi saf görüntü olarak avisynth’in kullanımına sunuyor.


5. satırdaki “ColorMatrix()” fonksiyonunun işlevini açıkçası
ben de bilmiyorum.


6. ve 7. Satırlardaki yeşille işaretli fonksiyonlar avisynth’in
elindeki video karesi üzerinde parlaklık ve renk doygunluğu düzeltmesi
yapmasını sağlıyor.


8. satırdaki “lanczos4resize(x,y)” fonksiyonu “lanczos4”
yöntemini kullanarak video’yu x*y
çözünürlüğüne boyutlandırıyor.


Kahverengi ile işaretli satırlar sonraki satırlarda
kullanılacak olan filtrelerin avisynth tarafından tanınması için gerekli
kütüphaneleri yüklüyor. Örneğin “frfun7.dll” yi
çağırmadan FRFun7(x,y,z) fonksiyonu avisynth tarafından geçersiz kabul
edilecektir.


Son satırlarda yer alan kodlar çok az karışık,

MT("""
FRFun7(3, 150,100)
limitedsharpenfaster(1)
""",threads=2,splitvertical=true)

Şeklinde olan satırları mantığını daha kolay kavrayabilmeniz
için


MT(""" FRFun7(3, 150,100) LimitedSharpenFaster(1)
""",threads=2,splitvertical=true)

şeklinde de yazabiliriz. Burada MT(“”x””,threads=y,splitvertical=z)
fonksiyonu, x yerine gelecek fonksiyonları “y” sayıda işlemci çekirdeğinde; z,
true ise görüntüyü “y” kadar parçaya dikey bölerek, “y” kadar işlemci
çekirdeğinde ayrı ayrı “x” fonksiyonlarını çalıştırarak görüntünün çok
çekirdekli işlemcilerde daha hızlı işlenmesini sağlıyor. Z, false ise yaptığı işlem
aynı, ama iş dağıtımını görüntüyü dikey olarak bölme şeklinde yapmıyor. Nasıl
böldüğü konusundaysa bir fikrim yok J


Bu avisynth kodunu bir oynatıcıda açtığımızda ekrana gelen
her kare önce decoder tarafında çözülüp, sonra yukarıdaki fonksiyonlar
tarafında değişime uğratılıp son haine getirilmiş oluyor. Video dosyasını
normal açtığımızda gelen görüntü ise yalnızca “DirectShowSource("I:\$$visual
media\anime\eve no jikan\eve no jikan 4.mkv", fps=23.976, convertfps=true)”
satırından oluşan bir avisynth kodunu vereceği sonuçla aynı şeydir. Ama tabi
avisynth kullanılmadan.


Yukarıdaki avisynth scripti
gürültü temizleme ve keskinleştirme filtreleri kullandığı için videonun
gerçek zamanlı olarak bilgisayarınızda oynatımı çoğu kişi için
imkansız. benim bilgisayarımda tam hızda saniyede 23.976 olması gereken
kare hızı bu videoda 2-3 gibi bir değere düşüyor. bu çıkışı encode
etmeye kalktığımızda mpeg4 gibi çok basit bir codecle bile çok düşük
fps değerleri alırız ama düzgün bir encoder ile sonuç görüntü çok
kaliteli olacaktır.


aşağıda giriş videosundan bir kare ve aynı andaki avisynth kodunun sonucu olan kare yer almaktadır.

Giriş Seviyesinde Avisynth Input.thGiriş Seviyesinde Avisynth 1080py.th

Eğer Megui gibi yalnızca
avisynth kabul eden programlara yalnızca altyazı gömme amaçlı script
oluşturmak istiyorsanız yalnızca aşağıdaki gibi bir kod kullanarak
altyazılı bir video elde edebilirsiniz.



import("C:\Program Files\Winnydows\XviD4PSP5\dlls\AviSynth\functions\AudioFunctions.avs")
import("C:\Program Files\Winnydows\XviD4PSP5\dlls\AviSynth\functions\VideoFunctions.avs")
loadplugin("C:\Program Files\Winnydows\XviD4PSP5\dlls\AviSynth\plugins\VSFilter.dll")
loadplugin("C:\Program Files\Winnydows\XviD4PSP5\dlls\AviSynth\plugins\ColorMatrix.dll")

DirectShowSource("I:\$$visual media\anime\ga-rei 0\karaoke encode\[Lisek]Ga-Rei Zero (6).mkv", fps=23.976, convertfps=true)

AutoYV12()
ColorMatrix()
Spline36Resize(848, 480)
TextSub("I:\$$visual media\anime\ga-rei 0\karaoke encode\[Lisek]Ga-Rei Zero (6).ass")


raw anime'yi çağırıyoruz, isteğe bağlı olarak
boyutlandırıyoruz, sonrada altyazıyı koyuyoruz. bu kadar basit.
unutmamanız gereken bir nokta, altyazıyı en son filtre olarak
kullanmamız gerekiyor. yoksa altyazı aegisubda gördüğümüzden farklı bir
şekilde karşımıza çıkar.
gezz+
gezz+
Soul of Anime

Mesaj Sayısı : 63
Kayıt tarihi : 28/02/09

Sayfa başına dön Aşağa gitmek

Giriş Seviyesinde Avisynth Empty Geri: Giriş Seviyesinde Avisynth

Mesaj tarafından Seifukusha C.tesi 23 Mayıs - 13:59

Avisynth'i bu detaylarıyla bilmiyordum ama galiba scriptten scripte fark var. Burada gösterdiklerin Xvid4psp'nin oluşturduğu script. Virtualdubmod'da mp4 veya mkv formatlı video kodlarken biraz avisynth'le uğraşmak gerekiyordu ama oradakiler daha basitti.

DirectShowSource komutu vardı. Onun altında tekrar directshowsource, orada fps değerini de giriyorduk. Onun altında ConvertToYV12(), onun altında textsub falan. Komutlar biraz farklı değil mi?
Seifukusha
Seifukusha
Çevirmen
Çevirmen

Erkek Mesaj Sayısı : 1870
Yaş : 36
Nerden : İstanbul
Ruh Hali : Giriş Seviyesinde Avisynth Centil10
Kayıt tarihi : 28/08/08

http://bounanimemanga.wordpress.com/

Sayfa başına dön Aşağa gitmek

Giriş Seviyesinde Avisynth Empty Geri: Giriş Seviyesinde Avisynth

Mesaj tarafından gezz+ C.tesi 23 Mayıs - 16:00

Aslında avisynth çok detaylı, farklı filtreler ile videoya takla attırabilirsin ama şuanki ihtiyacımız bu. basit oalrak temelini öğrendikten sonra zaten her filtrenin kullanımı belli. ingilizce bilen insanlarız sonuçta Smile

Altta gösterdiğim kod senin dediğine daha yakın farkettiysen, yalnızca silmeyi unuttuğum bir iki gereksiz satır vardı yazıdaki halinde:

loadplugin("C:\Program Files\Winnydows\XviD4PSP5\dlls\AviSynth\plugins\VSFilter.dll")

DirectShowSource("I:\$$visual media\anime\ga-rei 0\karaoke encode\[Lisek]Ga-Rei Zero (6).mkv", fps=23.976, convertfps=true)

AutoYV12()
TextSub("I:\$$visual media\anime\ga-rei 0\karaoke encode\[Lisek]Ga-Rei Zero (6).ass")


bu kod videonun üzerine altyazıyı yapıştırıyor başka yaptığı bir iş yok.
yukarıdaki kodları xvid4psp oluşturuyor dediğin gibi. ben de kolaylık olsun diye onu kullanıyorum. video ile ass altyazı aynı isimde aynı klasörde oldumu zaten xvid4psp avisynth koduna textsub filtresini ekliyor.

ama senin dediğin iki tane directshowsource komutu ile ne yapıldığını bilmiyorum. örnek bir kod yollarsan daha rahat anlarım.
gezz+
gezz+
Soul of Anime

Mesaj Sayısı : 63
Kayıt tarihi : 28/02/09

Sayfa başına dön Aşağa gitmek

Giriş Seviyesinde Avisynth Empty Geri: Giriş Seviyesinde Avisynth

Mesaj tarafından Seifukusha C.tesi 23 Mayıs - 16:06

Virtualdubmod ile çalıştığım zamanlar kullandığım scriptlere bir örnek:

Kod:
#ASYNTHER DirectShowSource
DirectShowSource("C:\Documents and Settings\Seifukusha\Desktop\SAKURA17\sakura17.mkv")
DirectShowSource("sakura17.mkv", fps=23.976)
ConvertToYV12()
textsub("sakura17.ass")

Xvid4psp'yi yüklediğimden bu yana ise, textsub komutunu kabul ettiremiyorum, tanımıyor bu kodu.. Neden bilmiyorum ama en azından xvid4psp varken script yazmama gerek kalmıyor.
Seifukusha
Seifukusha
Çevirmen
Çevirmen

Erkek Mesaj Sayısı : 1870
Yaş : 36
Nerden : İstanbul
Ruh Hali : Giriş Seviyesinde Avisynth Centil10
Kayıt tarihi : 28/08/08

http://bounanimemanga.wordpress.com/

Sayfa başına dön Aşağa gitmek

Giriş Seviyesinde Avisynth Empty Geri: Giriş Seviyesinde Avisynth

Mesaj tarafından gezz+ C.tesi 23 Mayıs - 17:46

textsub komutunu tanıması için başa

loadplugin("C:\Program Files\Winnydows\XviD4PSP5\dlls\AviSynth\plugins\VSFilter.dll")

satırını eklemeyi dene. Tabi bu şekilde kullanman için xvid4psp'nin yüklü olması gerekir. vsfilter.dll nerde ise o yolu yazıcan oraya. burada kullandığın filtre VSFilter, yani VobSubFilter. ancak VSFilter.dll'yi çağırdıktan sonra TextSub komutunu kullanabilirsin.

eğer o kodu olduğu haliyle kullanıyordum diyorsan, tahmin ettiğim kadarıyla avisynth yükleme klasöründe plugins içine atılan filtreleri çağırmadan direk tanıyabiliyor.

bir de iki tane DirectShowSource komutu kullanmana gerek yok sanırsam, o iki satırın yaptığı işi


DirectShowSource("C:\Documents and Settings\Seifukusha\Desktop\SAKURA17\sakura17.mkv", fps=23.976, convertfps=true)

satırı tek başına yapması lazım
gezz+
gezz+
Soul of Anime

Mesaj Sayısı : 63
Kayıt tarihi : 28/02/09

Sayfa başına dön Aşağa gitmek

Giriş Seviyesinde Avisynth Empty Geri: Giriş Seviyesinde Avisynth

Mesaj tarafından Seifukusha Ptsi 25 Mayıs - 16:04

Vsfilter ile ilgili durumu belirtmeyi unutmuşum. Virtualdub kullandığım zamanlar, vsfilter.dll dosyasını plugins klasörüne kopyalayıp uzantısını da vdf diye değiştirince komut doğrudan çalışıyordu. Sonradan xvid4psp'nin içinde gelen virtualdubmod'da da aynı dosyayı kopyalamama rağmen çalışmadı, sonra hem vdf hem dll formatlı olarak iki tane koydum yine işe yaramadı. Bir şekilde xvid4psp ile bağlantısı olduğu için, dediğin gibiş loadplugin demek gerekiyor galiba çalışması için.

Ama başıma bela açmadığı sürece iyi şu an pgi

2 tane directshowu niye yazdığımı ben de tam bilmiyorum. Öyle gördük, öyle öğrendik sadece;)

ConvertToYV12 ile AutıYV12'nin farkı nedir tam olarak? YV12 nedir, biliyor musun?
Seifukusha
Seifukusha
Çevirmen
Çevirmen

Erkek Mesaj Sayısı : 1870
Yaş : 36
Nerden : İstanbul
Ruh Hali : Giriş Seviyesinde Avisynth Centil10
Kayıt tarihi : 28/08/08

http://bounanimemanga.wordpress.com/

Sayfa başına dön Aşağa gitmek

Giriş Seviyesinde Avisynth Empty Geri: Giriş Seviyesinde Avisynth

Mesaj tarafından gezz+ Çarş. 27 Mayıs - 8:31

YV12'nin yalnızca videolar için kullanılan renk uzaylarından biri.
ingilizce bildiğini varsayarak avisynth.org'dan aldığım yazıyı direk kopyalıyorum:

What is YV12?


These are several different ways to represent colors. For example: YUV and RGB colorspace. In YUV colorspace there is one component that represent lightness (luma) and two other components that represent color (chroma). As long as the luma is conveyed with full detail, detail in the chroma components can be reduced by subsampling (filtering, or averaging) which can be done in several ways (thus there are multiple formats for storing a picture in YUV colorspace). YV12 is such a format (where chroma is shared in every 2x2 pixel block) that is supported by AviSynth. Many important codecs stored the video in YV12: MPEG-4 (x264, XviD, DivX and many others), MPEG-2 on DVDs, MPEG-1 and MJPEG.
The subsampling used by YV12 is also called "4:2:0" compared to "4:2:2" which is used by YUY2 and UYVY.


renk uzayları(rgb, hsv, yuv2, yy12,...) arasındaki farklar nediye sorarsan, rgb'de her piksel kırmızı yeşil ve mavinin farklı parlaklık değerleri sayesinde oluşur. örneğin beyaz 255,255,255, siyah 0,0,0, yeşil 0,255,0, turkuaz 0,255,255 şeklinde ifade edilir. tabi 0-255 arası değerlerin karışımları kullanılarak da ekranda gördüğünüz bütün renkler elde edilir. Tüm monitörler bu standardı kullanır. monitöre büyüteçle baktığınızda beyaz bir bölgede piksel başına tam parlak 3 tane kırmızı yeşil ve mavi noktalar görürsünüz. bu noktalar lcd'de daha belirgindir.

hsv'de de pikseller 3 değerle ifade edilir. ilkini anlayabilmek için, şerit şeklinde bir gökkuşağı çizip üzerine 0'dan 255'e kadar numaralar koyun. bu numaralara karşılık gelen renkler pikselin rengini belirliyor. diğer iki değer ise doygunluk ve parlaklık. gökkuşağından seçtiğimiz renklerin farklı parlaklık ve doygunluktaki tonları sayesinde gördüğümüz renkler oluşuyor.

yv12 de yukarıdakiler gibi farklı bir renk uzayı. her 2x2 piksellik kareler için parlaklık değerleri tutuluyor. başka bir bilgim yok Smile.

peki neden bu kadar farklı renk ifade etme şekillderi var derseniz, kullanım alanları, renklerin gerçeğe yakınlığı, resim işlemede matemtaiksel hesaplamaların belli renk uzaylarında ve her renk uzayında farklı zorlukta yapılıyor olması. örneğin rgb şeklinde ifade edilmiş bir rengin parlaklığını açmak için 3 değeri de aynı oranda arttırmanız gerekir. ama hsv'de yalnızca parlaklık değerini arttırarak işi halletmiş olursunuz, bu da daha az işlemci gücü demektir.

yv12'nin seçilme sebebi de bir çok video işleminin daha kolay yapılabilmesi. bildiğimiz x264, xvid gibi codec'ler renkleri vy12 şeklinde saklarlar.

avisynth kullanmak için bu yazdığım bilgiler çok fazla, kafanız karışmasın, genel olarak mantığınız anlamanız yeterli.
gezz+
gezz+
Soul of Anime

Mesaj Sayısı : 63
Kayıt tarihi : 28/02/09

Sayfa başına dön Aşağa gitmek

Giriş Seviyesinde Avisynth Empty Geri: Giriş Seviyesinde Avisynth

Mesaj tarafından lantis Çarş. 27 Mayıs - 8:40

bu güzel bilgiler için teşekkür ederim işimize yarayabilir
lantis
lantis
Super Moderator
Super Moderator

Erkek Mesaj Sayısı : 2029
Yaş : 44
Nerden : sİvAs
Ruh Hali : Giriş Seviyesinde Avisynth Bezgin10
Kayıt tarihi : 17/06/08

http://anikeyf.com/

Sayfa başına dön Aşağa gitmek

Giriş Seviyesinde Avisynth Empty Geri: Giriş Seviyesinde Avisynth

Mesaj tarafından Seifukusha Çarş. 27 Mayıs - 13:07

Çok teşekkür ettim gezz+. Artık elle avisynth yazmaya başlayabilirim yavaş yavaş 8)
Seifukusha
Seifukusha
Çevirmen
Çevirmen

Erkek Mesaj Sayısı : 1870
Yaş : 36
Nerden : İstanbul
Ruh Hali : Giriş Seviyesinde Avisynth Centil10
Kayıt tarihi : 28/08/08

http://bounanimemanga.wordpress.com/

Sayfa başına dön Aşağa gitmek

Giriş Seviyesinde Avisynth Empty Geri: Giriş Seviyesinde Avisynth

Mesaj tarafından Deddo Paz 21 Haz. - 22:43

Herkese tavsiye, vsfilter.dll'yi çağırırken avisynth klasöründekini değil, aegisub klasöründekini kullanın. Bu vsfilter.dll'si modifiye edilmiş (hacklenmiş) ve geliştirilmiş bir sürümdür, \blur, \fax, \fay gibi yeni komutları destekler. Ayrıntılı bilgi için aegisub.net tutoriallarına bakabilirsiniz.
Deddo
Deddo
Isınan üye
Isınan üye

Erkek Mesaj Sayısı : 122
Yaş : 33
Ruh Hali : Giriş Seviyesinde Avisynth Karizm10
Kayıt tarihi : 31/10/08

Sayfa başına dön Aşağa gitmek

Giriş Seviyesinde Avisynth Empty Geri: Giriş Seviyesinde Avisynth

Mesaj tarafından gezz+ Ptsi 22 Haz. - 19:03

ya deddo kaç aydır sana ulaşmaya çalışıyorum bak şu başlığa var mı bi hatam diye Very Happy şu bu yanlış diye yazmadığına göre onayı da aldım, tamamdır.
gezz+
gezz+
Soul of Anime

Mesaj Sayısı : 63
Kayıt tarihi : 28/02/09

Sayfa başına dön Aşağa gitmek

Giriş Seviyesinde Avisynth Empty Geri: Giriş Seviyesinde Avisynth

Mesaj tarafından Deddo Ptsi 22 Haz. - 19:17

Eheh, bu aralar pek bir ulaşılmazım. Tamamen okumadım ama gördüğüm kadarıyla gayet doğru konuşuyorsun, hatta Türkçelerini düşünme zahmetinde bulunmadığım birçok encoding terimini Türkçe kelimelerle anlatmışsın, tebrik ettim. xD
Deddo
Deddo
Isınan üye
Isınan üye

Erkek Mesaj Sayısı : 122
Yaş : 33
Ruh Hali : Giriş Seviyesinde Avisynth Karizm10
Kayıt tarihi : 31/10/08

Sayfa başına dön Aşağa gitmek

Sayfa başına dön

- Similar topics

 
Bu forumun müsaadesi var:
Bu forumdaki mesajlara cevap veremezsiniz