Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 249187 (10623)

| Suchen
| Zurück zur Übersicht

Autor | Thema: Avi-Videos im Hauptfenster
rico
| Datum:07.02.02 15:17 |
Wie ist es möglich das Avi-Video im Hauptfenster darzustellen? Mit den mci befehl wie es hier schon mehrfach beschrieben wurde wird das video in einem eigenes Fenster Wiedergegeben.
Mischa Brandt
| Datum:10.02.02 05:23 |
Hallo rico! Hier ein Beispiel-Quellcode als Antwort auf Deine Frage: 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 Bei Mpeg-Videos geht das scheinbar nicht ganz so einfach. (ich hatte da meine Schwierigkeiten bei der Positionierung mit 'Put') Eine Lösung habe ich dennoch. (ein Tutorial von 'sonic' hat's mir gezeigt :-) Hier der zugeschnittene Beispiel-Quellcode: 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 Hat aber den Nachteil, daß im Gegensatz zum Avi-Beispiel der Video immer noch im eigenen Fenster abgespielt wird. Eben nur ohne Rahmen und mit frei bestimmbarer Position und Größe. Es sieht dann aber so aus, als wenn es Teil Deines Programms ist. (ist also nicht so günstig, wenn das Hauptfenster verschiebar ist.. ;-) Ich ziehe die Mpeg-Lösung aber vor, wegen der erschlagenen Dateigröße von Avi-Videos. (hat ja nicht jeder DivX installiert der meine Programme bekommt. Aber da gibt es sicherlich auch Lösungen..) Wenn es aber nur darum geht eine kleine Avi-Animation darzustellen, ist die Größe natürlich nicht ganz so gravierend. Nun denn, ich hoffe es hilft Dir. Mischa
Roland G. Hülsmann
| Datum:10.02.02 11:59 (rgh-soft@t-online.de) |
Ein kleiner Tip noch. Damit es auch mit langen Dateinamen klappt, sollte dieser in Anführungszeichen gesetzt werden. Also: <...> A$ = LoadFile$(... A$ = Chr$(34) + A$ + Chr$(34) <...> Gruß Roland
rico
| Datum:11.02.02 13:58 |
Die bisherigen tips haben mir schon etwas geholfen, auch wenn man den tip von Roland anwendet habe ich auch festgestelt das man nicht alle avi-dateien abpielen. gibt es eine beschränkung auf die länge der Avi-dateien oder gibt es zeichen die nicht in dem Dateinamen enthalten sein dürfen?
Mischa Brandt
| Datum:14.02.02 04:00 |
Da scheint es ein Problem mit den "Ersatzzeichen" zu geben, die da wären: \t \a \n \z. Bei direkten Datei-Operationen kann man das Problem beheben, indem man den String in Anführungszeichen setzt, wie Roland ja schon erwähnte. Ich denke aber, daß bei Videos ja nur ein "String" an die MCI-Schnittstelle gesendet wird und die eigentliche Datei-Operation nicht von Profan aus läuft. Zumindest hatte ich da auch meine Probleme. Behoben habe ich es mit einer kleinen Funktion. Beispiel-Quellcode: DEF @Datei(1) Add$(Add$(Chr$(34),@$(1)),Chr$(34)) DEF @kompatibel(1) Left$(@Translate$(@Translate$(@Translate$(@Translate$(@$(1),\ "\t","\\t"),"\a","\\a"),"\n","\\n"),"\z","\\z"),\ Sub(Len(@Translate$(@Translate$(@Translate$(@Translate$(@$(1),\ "\t","\\t"),"\a","\\a"),"\n","\\n"),"\z","\\z")),\ @IF(Equ$(Right$(@$(1),1),"\z"),0,2))) Declare A$ cls A$="c:\test\arbeit\namen\zahlen.mpg" 'ein Beispiel mit allen "Ersatzzeichen" Print A$ 'So gehts nicht A$=Datei(A$) 'diese Funktion setzt den String in "." Print A$ '...geht aber trotzdem nicht! A$=kompatibel(A$) 'diese Funktion ersetzt alle Ersatzzeichen mit \\* Print A$ 'jetzt geht es!! waitinput End Diese Lösung funktioniert zwar, aber möglicherweise gibt es ja noch eine etwas weniger umständliche Methode!? Mischa
Mischa
| Datum: 14.02.02 04:16 |
Nachtrag: Wenn man bei den Pfadangaben von vornherein statt einem Backslash zwei verwendet, also C:\\test\\zombie.avi sollte es auch keine Schwierigkeiten geben! :-) (siehe Profan-Hilfe)

| Zurück zur Übersicht