Seite 1 von 1
Movie in einer Schleife
Verfasst: 22.09.2007 19:12
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)...
Verfasst: 22.09.2007 19:26
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
Verfasst: 22.09.2007 21:25
von Zweihänder
Leider kann ich den Status eines mp3-Movies nicht mit
MovieStatus(#movie)
abfragen...

Verfasst: 22.09.2007 21:33
von Scarabol
Ok, dann musste halt die Länge in eine Variable speichern...
Gruß
Scarabol
Verfasst: 22.09.2007 21:41
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
Verfasst: 22.09.2007 21:48
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
Verfasst: 22.09.2007 21:53
von Zweihänder
Uiuiuiui,
das sieht kompliziert aus. Denke dafür reichen meine spärlichen Kenntnisse noch nicht... schade

Verfasst: 22.09.2007 21:58
von Fluid Byte
Hmmm, joa...
Wie könnt' ich das vereinfachen? *kopfkratz*
Ehrlich gesagt keine Ahnung, für mich ist das ne klare Sache.
Du könntest vielleicht Timer benutzen das wird aber wohl ziemlicher Murks. Mal guggen ob ich es irgendwie vereinfachen kann.
Verfasst: 22.09.2007 22:06
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...
Verfasst: 22.09.2007 23:03
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