Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 243031 (4467)
  Suchen
 Zurück zur Übersicht
 AutorThema: Video als Hintergrund
Christoph Schleupner
Datum:19.04.02 14:45 Antwortenals Email verschicken (triplec@web.de) 


Hi@all. Also ich kann mit diesen Befehlen:
cls
mcisend$("OPEN sonne.avi TYPE MPEGVIDEO ALIAS AVI")
mcisend$("PLAY AVI")
waitkey
mcisend$("Close AVI")
Ein DIVX Avi wiedergeben. Das dumme ist, das es in einen eigenen Fenster wiedergegen wird. gib es eine möglichkeit das man es im Hauptfenster als wie ein Hintergrundbild ( In den Fall Video) wiedergeben kann und moglichst noch etwas darüber machen ??? Please Help


Florian May
Datum:19.04.02 18:12 Antwortenals Email verschicken  


Ich habe mit den Umgang von Videos unter Profan nicht sehr gute Erfahrungen gemacht. Bei mir funzt der eine Code, ma nächsten tag geht er net, selbst der Beipiel Code von Prfan bricht bei mir mit Fehlern ab. Ich denke ein TUT wäre mal sehr hiflreich, da es doch auf jeden fall bei mit einigen Problemen nie vorran gehen wird.

Ich denke das ist möglich, du musst nur den windowstyle des fnester ändern ich schaue gerade mal


Florian May
Datum:19.04.02 18:19 Antwortenals Email verschicken  


Hier alle Codes die ich zum thema gefunden habe:

'AVI Animate unter Profan 32, ohne Fenster

DEF @CreateAnimate(6) @control("SysAnimate32",@$(2),$50800007,@%(3),@%(4),@%(5),@%(6),@%(1),101, %HInstance)

WindowStyle 26
WindowTitle " Animate 32"
Window 1,1-320,240
Settruecolor 1
cls rgb(75,75,192)

declare ende%
declare animate&
declare b1%,b2%, b3%

Declare avi#

proc PlayAVI
parameters avi$,nx1%, ny1%, nx2%, ny2%
Dim avi#,255
let Animate&=CreateAnimate(%Hwnd,"",nx1%,ny1%,nx2%,ny2%)
String avi#,0=avi$
sendmessage(Animate&,$464,0,avi#) 'ACM_OPEN = WM_USER + 100
Dispose avi#
endproc

let b1% = @Createbutton(%Hwnd,"Start",10,10,90,20)
let b2% = @CreateButton(%Hwnd,"Stop" ,100,10,90,20)
let b3% = @Createbutton(%Hwnd,"Close",200,10,90,20)

PlayAVI "film.avi" ,70,70,150,80

Dim avi#,255
String avi#,0 = "film.avi"

Let Ende%=0
Whilenot Ende%

Case getfocus(b2%) : sendmessage(Animate&,$466,0,0) 'ACM_STOP = WM_USER + 102
Case getfocus(b1%) : sendmessage(Animate&,$464,0,avi#) 'ACM_OPEN = WM_USER + 100
Case or(equ(%Key,4),getfocus(b3%)) : ende% = 1
wend

Dispose avi#

'---------------------------
'ICC_ANIMATE_CLASS = $80
'ANIMATE_CLASS = "SysAnimate32"
'WM_USER = $400
'ACS_CENTER = $1
'ACS_TRANSPARENT = $2
'ACS_AUTOPLAY = $4
'ACM_OPEN = WM_USER + 100
'ACM_PLAY = WM_USER + 101
'ACM_STOP = WM_USER + 102
'WS_EX_TRANSPARENT = $20
'-------------------------
--------------------------------------------------------------------------------------
x%=100 ' x - Ausgabekoordinate
y%=100 ' y - Ausgabekoordinate
b%=320 ' b - Breite der Ausgabe
h%=240 ' h - Höhe der Ausgabe

handle$=@Str$(%HWnd)
b$="logo.avi"
b$=@ADD$(@ADD$("OPEN ",b$)," TYPE AVIVIDEO ALIAS FILM")
b$=@MCISend$(b$)

b$="WINDOW FILM Handle ";handle$
@MCISend$(b$)
b$="PUT FILM DESTINATION AT ";@Str$(x%),@Str$(y%),@Str$(b%),@Str$(h%)
@MCISend$(b$)

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

Cls
Declare A$,B$
WindowTitle "AVI-Video"
Let A$=@LOADFILE$("FILM-DATEI","*.AVI")
While @NEQ$(A$,"")
Let A$=@ADD$(@ADD$("OPEN ",A$)," TYPE AVIVIDEO ALIAS FILM")
Let B$=@MCISend$(A$)
Case %MCIError: Print "Fehler: ";B$
Let B$=@MCISend$("put FILM destination at 10 10 200 100") 'Hier die Position u. Größe
Let A$=Add$("WINDOW FILM handle ",Str$(%HWnd))
Let B$=@MCISend$(A$)
Let B$=@MCISend$("PLAY FILM")
Waitinput
Let B$=@MCISend$("CLOSE FILM")
Let A$=@LOADFILE$("FILM-DATEI","*.AVI")
Wend
End

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

PROC MMFehler
Parameters Fehler$
@MessageBox(Fehler$,"MCI Fehler:",16)
@MCISend$("CLOSE CLIP")
END
ENDPROC

windowtitle "mpg-wideo"
Window 0,0-%MaxX,%MaxY

Declare B$,F$,I%

LET f$="teste.mpg" 'Ort/Name des mpeg-videos
LET f$=@ADD$(@ADD$("OPEN ",f$)," TYPE MPEGVIDEO ALIAS CLIP style popup parent ")
LET f$=@ADD$(f$,@STR$(%hwnd))
LET B$=@MCISend$(f$)
Case %MCIError:MMFehler B$
Let B$=@MCISend$("PLAY CLIP NOTIFY")
Case %MCIError:MMFehler B$
Let B$=@MCISend$("pause CLIP")
Case %MCIError:MMFehler B$
Let i%=@GetActiveWindow()
SetWindowPos i%=50,50-800,600;0 'Positon/Größe des Films
Let b$=@mcisend$("resume CLIP")
Case %MCIError:MMFehler B$
While @Equ$(@MCISend$("status CLIP mode"),"playing")
Endwhile
B$=@MCISend$("CLOSE CLIP")
Case %MCIError:MMFehler B$
waitinput
END
-------------------------------------------------------------------------
declare x%,y%,b%,h%
declare handle$,b$
cls

let x%=50 ' x - Ausgabekoordinate
let y%=50 ' y - Ausgabekoordinate
let b%=320 ' b - Breite der Ausgabe
let h%=240 ' h - Höhe der Ausgabe
' FILM - AliasName AVI Datei

let handle$=@Str$(%HWnd)
let b$="beispiel.avi"
let b$=@ADD$(@ADD$("OPEN ",b$),\
" TYPE AVIVIDEO ALIAS FILM")
let b$=@MCISend$(b$)

let b$="WINDOW FILM Handle ";handle$
@MCISend$(b$)
let b$="PUT FILM DESTINATION AT ";\
@Str$(x%),@Str$(y%),@Str$(b%),@Str$(h%)
@MCISend$(b$)
@MCISEND$("PlAY FILM")

waitinput
@MCISEND$("STOP FILM")
@MCISend$("CLOSE FILM")




Mischa Brandt
Datum:19.04.02 19:59 Antwortenals Email verschicken  


Hi Christoph!

Wie man einen Video ins eigene Programm-Fenster bekommt, ist in diesem Forum schon besprochen worden. Einfach mal die Suche-Funktion nutzen, Stichwort: Avi-Videos im Hauptfenster

Ich glaube das mit dem 'darüber' machen könnte schwierig werden. Ich könnte mir allerdings vorstellen, daß Du ein Dialogfenster passend darüber positionieren kannst. Mit einem neuen Hauptfenster geht es in jedem Fall. Das letztere und möglicherweise auch die erste Möglichkeit läßt sich dann durchaus in beliebiger Fenster-Form darstellen, wenn es Dir darum geht ein paar 'Buttons' oder ähnliches darüber zu stellen. Hilfreich dabei wäre die Rgntest.dll von Andreas Miethe, allerdings lassen sich ein paar Regionen auch durchaus 'zu Fuß' programmieren. Ich hoffe aber, daß es noch andere Möglichkeiten gibt. Ich bin aber kein MCI-Experte.

Gruß,
Mischa


Frank Abbing
Datum:19.04.02 20:13 Antwortenals Email verschicken (frankabbing@12move.de) 


Hallo,

ich denke, du könntest das mit Sprites hinbekommen, die meine ProSpeed.dll bietet. Ausprobieren...

Gruß, Frank


Mischa
Datum:19.04.02 22:48 Antwortenals Email verschicken  


Hi Frank!

Das würde aber wohl doch nur mit rechteckigen Sprites funktionieren, oder?
Ich meine, der Video-Hintergrund ändert sich doch stetig und die beiden Bildschirmkopien sind ja nun mal statisch.
Oder sollte/könnte man den Video-Hintergrund ständig im fps-Takt herumkopieren?

Gruß,
Mischa


Frank Abbing
Datum:20.04.02 10:19 Antwortenals Email verschicken  


Hi Mischa,

gerade, weil sich der Hintergrund immer ändert.
Kann sein, das dann die Ränder leicht flackern, aber vielleicht sieht dieser Effekt ja gerade toll aus. Wie gesagt, ausprobieren.

Gruß, Frank


Florian May
Datum: 20.04.02 12:41 Antwortenals Email verschicken  


Mach es doch so:

Plaziere das Video auf nen Dialogfenster, öffne das hauptfenster mit dem windowstyle für unsichtbare fenster im Vordergrund und schon kannste die ganzen sachen auf den Hauptfenster plazieren ohne das es das video stört.

Teste das mal.


 Zurück zur Übersicht