Problem mit Movie\MP3 und Loop

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Problem mit Movie\MP3 und Loop

Beitrag von dllfreak2001 »

Ich möchte in mein Spiel eine sich immer wiederholende Musik einbauen.
Ich würde am liebsten dafür das MP3-Format nutzen. Leider habe ich das Problem das bei Abfrage mit "Moviestatus()" die Melodie zwar immer wiederholt wird aber es entsteht eine störende Pause bei jeder
Wiederholung. Ich habe zwar im Forum eine Lösung des Problems für Videodateien gesehen aber nicht für MP3-Dateien.

Ich hoffe da kann mir jemand helfen THX im voraus! :allright:
I´a dllfreak2001
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Ist vielleicht zu einfach gemacht, aber so kann man eine bestimmte Anzahl von Wiederholungen machen oder durch eine Repeat-Schleife endlos wiederholen lassen. Störende Knackser oder Pausen müßten evt.
durch den Minuswert angepasst werden.

Code: Alles auswählen

;Sound ohne Pause mehrfach wiederholen
;Falko
If InitMovie() = 0
  MessageRequester("Fehler", "Ist leider nicht möglich", 0) 
  End
EndIf
;MP3 laden und länge feststellen und eventuell den -100Wert ändern
 If LoadMovie(0, "demo.mp3")
 lang=(MovieLength()/10000)-100
  Else
  MessageRequester("Ladehemmung","konnte mp3 nicht laden")
 EndIf    
 ;
 ;hier spielen wir die mp3 ab, entweder mit repeat oder Anzahl Wiederholungen
 OpenWindow(0,0,0,0,0,#PB_Window_BorderLess ,"")
 For i=0 To 5
     PlayMovie(0,WindowID())
     Delay(lang)
 Next i
 CloseWindow(0)
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Beitrag von dllfreak2001 »

Leider funtzt dieser Code auch nicht so richtig, es kommt trotzdem noch zu einer störenden Unterbrechung.
Der Rechner scheint das Lied immer wieder neu zu laden bevor er es abspielt. Doch diesen Fehler hatte ich auch mit meinem Code.
Denn meine Festplatte tut immer etwas wenn das Lied wiederholt wird.
I´a dllfreak2001
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Und im Mediaplayer gibt es mit aktivierter Wiederholung keine Probleme?

Gruß Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Beitrag von dllfreak2001 »

Ich habe es ausprobiert und Tatsache mit dem Windowsmediaplayer habe ich auch so eine Unterbrechung. Oh Mann :|
I´a dllfreak2001
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

Aufpassen

MP3 ist nicht Movie-Format
MovieLength geht da nicht richtig. siehe auch PB-Hilfe.

Wie bekommt man die Länge einer MP3 Datei heraus?

Abspielen und Zeit stoppen :)

oder die MP3 Lib von ElChoni nehmen ..

Code: Alles auswählen

;Sound ohne Pause mehrfach wiederholen 
;Falko 
If InitMovie() = 0 
  MessageRequester("Fehler", "Ist leider nicht möglich", 0) 
  End 
EndIf 
;MP3 laden und länge feststellen und eventuell den -100Wert ändern 
 If LoadMovie(0, "C:\mama.mp3")
  
 
 Structure MP3INFO
  fileSize.l    ; in bytes
  fileLength.l  ; in miliseconds
  bitrate.l     ; in bps. if negative: variable bitrate,bitrate=negated average
  frequency.l   ; in Hertz
  nFrames.l     ; number of MPEG frames
EndStructure
mpi.MP3INFO

GetMP3Info("C:\mama.mp3", @mpi)
lang=mpi\fileLength ;Länge in MilliSekunden ermitteln
Debug lang

 
; lang=(MovieLength()/10000)-100 
  Else 
  MessageRequester("Ladehemmung","konnte mp3 nicht laden") 
 EndIf    
 ; 
 ;hier spielen wir die mp3 ab, entweder mit repeat oder Anzahl Wiederholungen 
 OpenWindow(0,0,0,0,0,#PB_Window_BorderLess ,"") 
 For i=0 To 5 
     PlayMovie(0,WindowID()) 
     Delay(lang) ; <- hier nochwas rumfummeln (subtrahieren) bis es passt
 Next i 
 CloseWindow(0)
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Antworten