Logo in Video einfügen |
breez
Mitglied
Dabei seit: 23.11.2006
Beiträge: 39
Herkunft: AUT
|
|
Hallo,
ich bräuchte wieder mal eure Hilfe.
Also, ich möchte ein Logo bzw. Bild (oder eher eine weiße Schrift mit transparentem Hintergrund) in ein Video langsam ein-, und am Schluss des Videos wieder langsam ausbleden lassen.
Was ich so ergooglet hab, geht das mit Avisynth, leider schnall ich nicht ganz wie das gehen soll, zB http://forum.gleitz.info/showthread.php?t=30919 .
Glaub verstanden zu haben, dass man eine Bitmap mit 8 bit braucht, einen Pfad zu dem Bild natürlich, die Koordinaten wo das Bild im Video angezeigt werden soll, ... ja und der Rest Bahnhof.
Bitte langsam 4 dummies
Wie genau sollte so ein Script aussehen (also auch mit Ein- und Ausblendeeffekt)? Kann ich das dann einfach mit megui encoden? Gibts sonst noch was zu beachten?
riesen ThX
EDIT: cooool, es läuft so wies im gleitz steht.. nur wofür stehen die einzelnen punkte? wo stell ich ein, wo das logo aufscheinen soll, wann und wie lange?
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von breez: 30.06.2007 17:06.
|
|
30.06.2007 16:20 |
|
|
Selur
spamming old Newbie
Dabei seit: 13.03.2002
Beiträge: 10.933
|
|
Wenn ich mich nicht irgendwo vertan habe sollte das so klappen:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
|
# Hier wird der Clip geladen über den man das Logo legen will
function movie(){
AviSource("C:\video.avi")
#Alternativ:
# DirectShowSource("c:\video.mkv")
# LoadPlugin("Pfad zu DGDecode")
# MPEG2Source("Pfad zur video.d2v") #mit DGIndex erzeugtes d2v File laden
# hier kommen dann noch eventuelle Filter hinter
ConvertToRGB32() # wandelt die Eingabe in RGB32 um
}
# end = legt fest wie lange (in Frames) das Logo angezeigt wird
# fps = fps=framerate(movie) hier wird dem "LogoClip" die Framerate des Clips zugewisen
# pixel_type="RGB32" und use_DevIL=true sorgen dafür, das auch der AlphaChannel des Bildes geladen wird
# FadeIO(25) sorgt dafür, dass das Logo sich die ersten 25 Frames aufbaut und die letzten 25 frames verschwindet
# logo = ImageSource("Pfad zum Logo", end = 300, fps=framerate(movie), pixel_type="RGB32", use_DevIL=true).FadeIO(25)
logo = ImageSource("video.png", end = 105, fps=framerate(movie), pixel_type="RGB32", use_DevIL=true).FadeIO(25)
# Trennt die ersten 612 Frames des Clips ab, in denen das Logo nicht gezeigt wird und weißt sie teil1 zu
teil1 = movie.trim(0,612)
# teil2 = weißt teil2 den Teil des Clips zu während dem das Logo eingebelndet werden soll
# movie.trim(613,718) trennt die Frames 613-718 vom Clip ab
# layer(logo,op="add",x=-8,y=34) legt das Logo auf den Clip; linke obere Ecke des Logos liegt bei x=8 und y=34
teil2 = movie.trim(613,718).layer(logo,op="add",x=8,y=34)
# Weißt teil3 den kompletten Clip ab Frame 719 zu; hier wird das Logo nicht mehr angezeigt
teil3 = movie.trim(719,0)
# fügt die ganzen Frames zusammen
komplett = teil1 + teil2 + teil3
#gibt den Clip mit Logo wieder und wandelt ihn nach Yv12 um
return komplett.ConvertToYv12()
|
|
Cu Selur
Ps.: Achtung end= x und die Länge von Teil2 müssen übereinstimmen.
__________________ Hybrid
|
|
30.06.2007 19:05 |
|
|
breez
Mitglied
Dabei seit: 23.11.2006
Beiträge: 39
Herkunft: AUT
Themenstarter
|
|
Vielen Dank Selur!
ganz hab ichs leider noch nicht hinbekommen ... bekomme einen Avisynth script error: Invalid arguments to function "FadeIO".
Wenn ich FadeIO rausnehme, kommt "Could not open file in Devil library reading file I:\logo.png"
mit dem gleichen .png hat es aber vorher mit dem anderen script vom gleitz funktioniert ... :-\
Hier das Script:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
|
function movie()
{
dgdecode_MPEG2Source("I:\abc.d2v")
#Not doing anything because the source is progressive
}
end = 3277
fps = 30
pixel_type="RGB32"
use_DevIL=true
FadeIO(30)
logo = ImageSource("I:\logo.png",0,0,25,pixel_type="rgb32")
teil1 = movie.trim(0,43)
teil2 = movie.trim(44,3321).layer(logo,op="add",x=8,y=34)
teil3 = movie.trim(3322,0)
komplett = teil1 + teil2 + teil3
return komplett.ConvertToYv12() |
|
Was mach ich denn falsch?
|
|
30.06.2007 21:22 |
|
|
Selur
spamming old Newbie
Dabei seit: 13.03.2002
Beiträge: 10.933
|
|
Du hast die Parametererklärung zur ImageSourcezeile als Befehl eingefügt.
(das .FadeIO(30) muss mit am ImageSource hängen
versuch mal:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
|
function movie(){
dgdecode_MPEG2Source("I:\abc.d2v")
}
logo = ImageSource("video.png", end = 3277, fps=25, pixel_type="RGB32", use_DevIL=true).FadeIO(30)
teil1 = movie.trim(0,43)
teil2 = movie.trim(44,3321).layer(logo,op="add",x=8,y=34)
teil3 = movie.trim(3322,0)
komplett = teil1 + teil2 + teil3
return komplett.ConvertToYv12() |
|
Du solltest noch:
1. die x= und y= Werte in Zeile 8 anpassen
2. bei fps= hab ich mal 25 eingetragen, da 30 mir ungewöhlich erscheint. (progressives Material mit 30fps ist sehr selten)
Cu Selur
__________________ Hybrid
|
|
30.06.2007 21:40 |
|
|
breez
Mitglied
Dabei seit: 23.11.2006
Beiträge: 39
Herkunft: AUT
Themenstarter
|
|
das x= und y= legt fest, wo das Logo im Video angezeigt wird?
welche bequeme Möglichkeit das rauszufinden gibt es?
naja, aber das wäre doch jetzt noch egal wo es ist, aber ich bekomme davon eine fehlermeldung
also kanns doch nicht egal sein ..
"Layer: image formats don't match"
Achja, und es müssten 30fps sein, ist ein video von meiner digicam ^^
|
|
30.06.2007 22:30 |
|
|
Selur
spamming old Newbie
Dabei seit: 13.03.2002
Beiträge: 10.933
|
|
Zitat: |
das x= und y= legt fest, wo das Logo im Video angezeigt wird? |
yup,....
Zitat: |
welche bequeme Möglichkeit das rauszufinden gibt es? |
siehe: http://avisynth.org/oldwiki/index.php?page=Layer+Deutsch
"Layer: image formats don't match"
Du hast auch aus meinem Skript nicht:
ConvertToRGB32()
übernommen.
Muss direkt unter die dgdecode_MPEG2Source Zeile noch vor die }.
Cu Selur
__________________ Hybrid
|
|
30.06.2007 23:49 |
|
|
breez
Mitglied
Dabei seit: 23.11.2006
Beiträge: 39
Herkunft: AUT
Themenstarter
|
|
tz ... gibts ja nicht *g*
jedenfalls funktionierts jetzt!!
1000Dank, wenn wir uns mal treffen geb ich dir einen aus
|
|
01.07.2007 02:21 |
|
|
|