Movie-Frage?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Movie-Frage?

Beitrag 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. :freak:
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Benutzeravatar
jear
Beiträge: 288
Registriert: 17.10.2004 01:59
Wohnort: Ammerland

Beitrag 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.
Man ist nie zu alt zum lernen, auch wenn man dabei manchmal alt aussieht!
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag von roherter »

Und wie mache ich das?
Ich meine wie setzte ich das als default über PB?
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag von roherter »

Wenn ich das window neuzeichne wirds auch angezeigt aber danke,

Code: Alles auswählen

RedrawWindow_(WindowID(0), 0, 0, #RDW_INVALIDATE)
vielleicht liegts auch an meiner beta11 muss sie mal runterschmeissen.
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Benutzeravatar
jear
Beiträge: 288
Registriert: 17.10.2004 01:59
Wohnort: Ammerland

Beitrag 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.
Zuletzt geändert von jear am 27.05.2006 17:38, insgesamt 1-mal geändert.
Man ist nie zu alt zum lernen, auch wenn man dabei manchmal alt aussieht!
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag 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
Zuletzt geändert von roherter am 27.05.2006 18:29, insgesamt 2-mal geändert.
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Die Procedure entweder ganz nach Oben, oder declarieren und ans Ende.
Damit die Anfänger sich sowas garnicht erst angewöhnen :freak:
Zumindest in diesem Unterforum finde ich es so nicht so schön
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag von roherter »

Ok habe ich geändert. :allright:
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Antworten