Seite 1 von 1
Movie-Frage?
Verfasst: 27.05.2006 12:51
von roherter
Da ich im movie bereich noch nicht viel gemacht habe habe ich hier mal ne anfängerfrage:Ist es normal das das movie erst nach bewegen des fensters angezeigt wird?
edit :Zumindest wenn ich innerhalb der repeatschleife nach einem event über eine if abfrage aufrufe.

Verfasst: 27.05.2006 13:25
von jear
Antwort von Radio Eriwan :
Im Prinzip ja. Dafür kann aber PB überhaupt nichts. Es hängt ganz allein davon ab, welcher Renderer auf Deinem System von DirectShow per Default benutzt wird.
Die Sache mit den DirectShow - Filtern ist eine ziemlich schwierige und dickichtartige Sache.
Wenn Du einsteigen willst, sorge dafür, dass der VMR9 als Renderer zum Default wird.
Verfasst: 27.05.2006 13:44
von roherter
Und wie mache ich das?
Ich meine wie setzte ich das als default über PB?
Verfasst: 27.05.2006 14:19
von roherter
Wenn ich das window neuzeichne wirds auch angezeigt aber danke,
vielleicht liegts auch an meiner beta11 muss sie mal runterschmeissen.
Verfasst: 27.05.2006 16:47
von jear
Verschiebe mal das Video-Fenster oder überlagere es mit anderen Fenstern. Wird dann das Video von Windows wieder richtig dargestellt?
Mache mal einen Snapshot mit Strg-Druck und füge das Bild in ein Bildverarbeitungsprogramm ein. Ist dann das Video Bestandteil des Bildes?
Wenn ja, dann ist VMR9 der Default-Renderer. Den Default-Renderer von DShow kannst Du mit einem Filtermanager (z.B. im Zoom-Player enthalten) bestimmen, indem Du dem gewünschten Filter zu den höchsten Merits verhilfst. Von PB aus ist da nix zu machen. Es sei denn, Du programmierst direct am DShow-Interface.
Um eine saubere Darstellung mit anderen Renderern (zb VMR) zu erreichen, muss man auf die Repaint- und Redraw-Ereignisse reagieren. Aber Vorsicht. Das Repaint ist selbstnährend und verebbt wie ein Echo. Das sollte man per Timer-Ereignis entkoppeln. Flag setzen und alle halbe Sekunde bearbeiten ist meist ausreichend.
Verfasst: 27.05.2006 16:51
von ts-soft
Einfach While WindowEvent() : Wend einfügen, bevor du das Video anzeigst.
Es muß eine Event-Ansprechpartner da sein, bevor das Video angezeigt wird.
Verfasst: 27.05.2006 18:09
von roherter
Habs jetzt so gelöst:
Benutzte Lib Pbosl für Starttimer()
Code: Alles auswählen
Procedure redr()
RedrawWindow_(WindowID(0), 0, 0, #RDW_INVALIDATE):
EndProcedure
If OpenWindow(0,0,0,200,250,"test",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
If CreateGadgetList(WindowID(0))
ButtonGadget(3,0,0,100,20,"play")
EndIf
EndIf
InitMovie()
StartTimer( 5 , 200 , @redr() )
Repeat
Event=WaitWindowEvent()
GadgetID=EventGadget()
If Event=#PB_Event_Gadget
If GadgetID=3
LoadMovie(2,"Das Movie.mpg")
Laenge = MovieLength(2)
If MovieStatus(2)<>0
Else
Debug Laenge/MovieInfo(2,0)
ResizeMovie(2,0,30,200,200)
If IsMovie(2): PlayMovie(2,WindowID(0)):EndIf
EndIf
EndIf
EndIf
Until Event=#PB_Event_CloseWindow
End
Verfasst: 27.05.2006 18:25
von ts-soft
Die Procedure entweder ganz nach Oben, oder declarieren und ans Ende.
Damit die Anfänger sich sowas garnicht erst angewöhnen
Zumindest in diesem Unterforum finde ich es so nicht so schön
Verfasst: 27.05.2006 18:27
von roherter
Ok habe ich geändert.
