 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 17.08.2009, 03:17 Titel: winmm.dll |
|
|
Also, ich kann eine mp3 Datei oder wav Datei abspielen.
Ich bekomme heraus, wieviele ms Lang das Lied ist, als auch bei welcher Position ich mich befinde, wenn ich es abspiele.
Ich kann das Lied nach dem pausieren auch wieder bei der selben Stelle abspielen.
Es wird auch angezeigt, wieviel Prozent gerade schon abgespielt worden sind.
Was kann es nicht.
Es kann nicht weiter im Liede nach vorne spulen, als auch zurück spulen.
Wie geht das denn?
Ich habe es leider nicht gefunden.
Achso hier mein Quelltext:
Der Quellcode muss in die Datei MCI_Basic.bi im Ordner inc gespeichert werden.
Hier der Code:
Code: |
DECLARE FUNCTION mciSendString LIB "winmm" ALIAS "mciSendStringA" (BYVAL AS STRING, BYVAL AS STRING, BYVAL AS UINTEGER, BYVAL AS INTEGER) AS UINTEGER
DECLARE FUNCTION MCI_Open (BYVAL MCI_File AS STRING, BYVAL MCI_Alias AS STRING) AS INTEGER
DECLARE FUNCTION MCI_Play (BYVAL MCI_Alias AS STRING) AS INTEGER
DECLARE FUNCTION MCI_Position (BYVAL MCI_Alias AS STRING) AS UINTEGER
DECLARE FUNCTION MCI_Length (BYVAL MCI_Alias AS STRING) AS UINTEGER
DECLARE SUB MCI_Stop(BYVAL MCI_Alias AS STRING)
DECLARE SUB MCI_Close(BYVAL MCI_Alias AS STRING)
DECLARE SUB MCI_Pause(BYVAL MCI_Alias AS STRING)
DECLARE SUB MCI_Resume(BYVAL MCI_Alias AS STRING)
FUNCTION MCI_Position (BYVAL MCI_Alias AS STRING) AS UINTEGER
DIM Null_Buffer AS STRING * 255
mciSendString "status " + MCI_Alias + " position", Null_Buffer, LEN(Null_Buffer), 0
FUNCTION = VAL(Null_Buffer)
END FUNCTION
FUNCTION MCI_Length (BYVAL MCI_Alias AS STRING) AS UINTEGER
DIM Null_Buffer AS STRING * 255
mciSendString "status " + MCI_Alias +" length", Null_Buffer, LEN(Null_Buffer), 0
FUNCTION = VAL(Null_Buffer)
END FUNCTION
FUNCTION MCI_Open (BYVAL MCI_File AS STRING, BYVAL MCI_Alias AS STRING) AS INTEGER
DIM MCI_Type AS STRING
MCI_Type = "MPEGVideo"
'"MPEGVideo" 'COLOR: RGB(255, 163, 79);">MP3
'"waveaudio" 'Wav
FUNCTION = mciSendString ("OPEN " + MCI_File +" TYPE "+ MCI_Type +" ALIAS " + MCI_Alias, "", 0, 0)
END FUNCTION
FUNCTION MCI_Play (BYVAL MCI_Alias AS STRING) AS INTEGER
FUNCTION = mciSendString ("play " + MCI_Alias + " from 0", "", 0, 0)
END FUNCTION
SUB MCI_Close(BYVAL MCI_Alias AS STRING)
mciSendString "CLOSE " + MCI_Alias, "", 0, 0
END SUB
SUB MCI_Stop(BYVAL MCI_Alias AS STRING)
mciSendString "STOP "+ MCI_Alias, "", 0, 0
END SUB
SUB MCI_Pause(BYVAL MCI_Alias AS STRING)
mciSendString "Pause "+ MCI_Alias, "", 0, 0
END SUB
SUB MCI_RESUME(BYVAL MCI_Alias AS STRING)
mciSendString "Resume "+ MCI_Alias, "", 0, 0
END SUB
|
Und so sieht mein Programm jetzt aus:
Code: |
#INCLUDE "mci_basic.bi"
screenres 300,300,32
DIM MCI_File AS STRING
DIM MCI_Alias AS STRING
DIM SLength AS UINTEGER
DIM SPosition AS UINTEGER
DIM anhalten AS string
MCI_File = "c:\a.mp3"
MCI_Alias = "Music1"
MCI_Open (MCI_File,MCI_Alias)
MCI_Play (MCI_Alias)
SLength=MCI_Length(MCI_Alias)
dim laenge as long
dim i as long
laenge = SLength / 100
dim a as long
dim taste as string
DO
cls
print "Taste s -> Start"
print "Taste p -> pausieren"
print "Taste r -> resume"
'Gibt die Länge in Sekunde an:
print SLength/1000
'Tastatur einbinden
taste = inkey
'Schleife
for i = 1 to 100
if SPosition > laenge*i then
a = i
end if
next
'Wenn die Taste p gedrückt wird, Lied pausieren
if taste = "p" then
MCI_Pause (MCI_Alias)
end if
'Wenn die Taste r gedrückt wird, Lied weiterspielen, bei der letzten Position
if taste = "r" then
MCI_Resume (MCI_Alias)
end if
'Wenn die Taste s gedrückt wird, Lied spielen
if taste = "s" then
MCI_Play (MCI_Alias)
end if
'Hier ausgeben, wieiviel Prozent vom Lied schon gespielt wurde
print a;"%"
'Hier die Länge des Liedes angeben
print SLength
'Hier die aktuelle Position herausfinden
SPosition = MCI_Position (MCI_Alias)
print SPosition
IF SPosition > SLength-5 THEN MCI_Play (MCI_Alias)
SLEEP 1,1
LOOP UNTIL MULTIKEY(&h01)
MCI_Stop (MCI_Alias)
MCI_Close (MCI_Alias)
SLEEP
|
 |
|
Nach oben |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 17.08.2009, 10:26 Titel: |
|
|
Ich musste die MC_Basic.bi ergänezen:
Code: |
DECLARE FUNCTION mciSendString LIB "winmm" ALIAS "mciSendStringA" (BYVAL AS STRING, BYVAL AS STRING, BYVAL AS UINTEGER, BYVAL AS INTEGER) AS UINTEGER
DECLARE FUNCTION MCI_Open (BYVAL MCI_File AS STRING, BYVAL MCI_Alias AS STRING) AS INTEGER
DECLARE FUNCTION MCI_Play (BYVAL MCI_Alias AS STRING) AS INTEGER
DECLARE FUNCTION MCI_Playvor (BYVAL MCI_Alias AS STRING) AS INTEGER
DECLARE FUNCTION MCI_Position (BYVAL MCI_Alias AS STRING) AS UINTEGER
DECLARE FUNCTION MCI_Length (BYVAL MCI_Alias AS STRING) AS UINTEGER
DECLARE SUB MCI_Stop(BYVAL MCI_Alias AS STRING)
DECLARE SUB MCI_Close(BYVAL MCI_Alias AS STRING)
DECLARE SUB MCI_Pause(BYVAL MCI_Alias AS STRING)
DECLARE SUB MCI_Resume(BYVAL MCI_Alias AS STRING)
FUNCTION MCI_Position (BYVAL MCI_Alias AS STRING) AS UINTEGER
DIM Null_Buffer AS STRING * 255
mciSendString "status " + MCI_Alias + " position", Null_Buffer, LEN(Null_Buffer), 0
FUNCTION = VAL(Null_Buffer)
END FUNCTION
FUNCTION MCI_Length (BYVAL MCI_Alias AS STRING) AS UINTEGER
DIM Null_Buffer AS STRING * 255
mciSendString "status " + MCI_Alias +" length", Null_Buffer, LEN(Null_Buffer), 0
FUNCTION = VAL(Null_Buffer)
END FUNCTION
FUNCTION MCI_Open (BYVAL MCI_File AS STRING, BYVAL MCI_Alias AS STRING) AS INTEGER
DIM MCI_Type AS STRING
MCI_Type = "MPEGVideo"
'"MPEGVideo" 'COLOR: RGB(255, 163, 79);">MP3
'"waveaudio" 'Wav
FUNCTION = mciSendString ("OPEN " + MCI_File +" TYPE "+ MCI_Type +" ALIAS " + MCI_Alias, "", 0, 0)
END FUNCTION
FUNCTION MCI_Play (BYVAL MCI_Alias AS STRING) AS INTEGER
FUNCTION = mciSendString ("play " + MCI_Alias + " from 0", "", 0, 0)
END FUNCTION
SUB MCI_Close(BYVAL MCI_Alias AS STRING)
mciSendString "CLOSE " + MCI_Alias, "", 0, 0
END SUB
SUB MCI_Stop(BYVAL MCI_Alias AS STRING)
mciSendString "STOP "+ MCI_Alias, "", 0, 0
END SUB
SUB MCI_Pause(BYVAL MCI_Alias AS STRING)
mciSendString "Pause "+ MCI_Alias, "", 0, 0
END SUB
SUB MCI_RESUME(BYVAL MCI_Alias AS STRING)
mciSendString "Resume "+ MCI_Alias, "", 0, 0
END SUB
SUB MCI_zu(BYVAL MCI_Alias AS STRING)
mciSendString "play position + 3000 "+ MCI_Alias, "", 0, 0
END SUB
FUNCTION MCI_Playvor (BYVAL MCI_Alias AS STRING) AS INTEGER
FUNCTION = mciSendString ("play " + MCI_Alias + " from 3000", "", 0, 0)
END FUNCTION
|
jetzt funktioniert es
Die Funktion war Playvor |
|
Nach oben |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 17.08.2009, 11:27 Titel: |
|
|
Achso eine Frage noch, kann ich die winmm.dll auch unter dos nutzen, oder ist es nur ab win 95 vorhanden? |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 17.08.2009, 19:21 Titel: |
|
|
ok, macht nix |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|