Movie in einer Schleife

Anfängerfragen zum Programmieren mit PureBasic.
Zweihänder
Beiträge: 49
Registriert: 21.06.2007 14:40

Movie in einer Schleife

Beitrag von Zweihänder »

Hi,

kann man ein mit LoadMovie geladenes mp3 wie einen Sound in einer Endlosschleife wiederholen. Bei Playsound geht das ja einfach mit den Parametern (#sound,1)...
Benutzeravatar
Scarabol
Beiträge: 1427
Registriert: 30.11.2005 21:00

Beitrag von Scarabol »

Nein, geht nicht musst wahrscheinlich auf externe Hilfe zurückgreifen...

Kann dir jetzt leider nix empfehlen, aber man könnte auch überprüfen ob der Movie noch läuft und diesen dann einfach neustarten..., dass ganze dann noch in einen Thread gepackt und fedisch...

Gruß
Scarabol
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea

PB-V: 4
WinXP
Zweihänder
Beiträge: 49
Registriert: 21.06.2007 14:40

Beitrag von Zweihänder »

Leider kann ich den Status eines mp3-Movies nicht mit

MovieStatus(#movie)

abfragen... :freak:
Benutzeravatar
Scarabol
Beiträge: 1427
Registriert: 30.11.2005 21:00

Beitrag von Scarabol »

Ok, dann musste halt die Länge in eine Variable speichern...

Gruß
Scarabol
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea

PB-V: 4
WinXP
Zweihänder
Beiträge: 49
Registriert: 21.06.2007 14:40

Beitrag von Zweihänder »

... und wie soll das aussehen?

Überprüfen, ob die Länge des Movies erreicht ist und den dann einfach neu starten?

Wenn du den Befehl MovieLength(#Movie) meinst, dann sagt mir die Hilfe-Datei, dass dieser Befehl nur mit tatsächlichen Movies funzt und bei mp3 aufgrund mangelnder Frames versagt...

Oder meinst du einen anderen Weg?

Gruß

Micha
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Es ist möglich mittels des Movie Interface einen MP3 Track in einer Schleife laufen zu lassen. Allerdings solltest du eines wissen:

"Seamless Looping" ist mit PB aber auch bedingt durch das MP3 Format nicht möglich. Du wirst immer eine Pause zwischen den einzelnen Durchläufen hören.

Hier ist ein Beispiel mit Interfaces:

Code: Alles auswählen

Structure MOVIEDATA
   Movie.IGraphBuilder
   MediaControl.IMediaControl
   MediaEvent.IMediaEventEx
   Window.IVideoWindow
   Audio.IBasicAudio
   Video.IBasicVideo
   MediaSeeking.IMediaSeeking
   State.l
EndStructure

InitMovie()

*mdat.MOVIEDATA = LoadMovie(0,"myfile.mp3")

*mdat\MediaSeeking\GetDuration(@pDuration)

; Variable muss zwischengespeichert werden, weiss nicht warum
Length = pDuration

OpenWindow(0,0,0,300,200,"void",$CC0001)

PlayMovie(0,WindowID(0))

Repeat
	EventID = WaitWindowEvent(5)
	
	*mdat\MediaSeeking\GetCurrentPosition(@pCurrent)

	If pCurrent = Length : PlayMovie(0,WindowID(0)) : EndIf
Until EventID = 16
Windows 10 Pro, 64-Bit / Outtakes | Derek
Zweihänder
Beiträge: 49
Registriert: 21.06.2007 14:40

Beitrag von Zweihänder »

Uiuiuiui,

das sieht kompliziert aus. Denke dafür reichen meine spärlichen Kenntnisse noch nicht... schade :cry:
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Hmmm, joa...

Wie könnt' ich das vereinfachen? *kopfkratz*

Ehrlich gesagt keine Ahnung, für mich ist das ne klare Sache. Bild

Du könntest vielleicht Timer benutzen das wird aber wohl ziemlicher Murks. Mal guggen ob ich es irgendwie vereinfachen kann.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Zweihänder
Beiträge: 49
Registriert: 21.06.2007 14:40

Beitrag von Zweihänder »

Ich habe jetzt einfach deine Ausführung in meinem Code übernommen. Allerdings wird das Movie jetzt gar nicht angespielt. Denke, dass mir da die Grundlagen noch fehlen...
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag von roherter »

Benutz die DeMP3 lib von Purearea
da gibts folgenden befehl:

Code: Alles auswählen

Result=DeMp3Repeat(TrackNum)    

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

 


Description :
Repeat the current song when playback has finished. 
  
Note:
Think this command will not be entirely useful as it is cancelled whenever any other command such as "pause", "play", etc are used after it. 
Direkter Link für PB4
http://purearea.net/pb/download/userlibs/DeMp3V1_01.zip
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Antworten