PowerBASIC FORUM - Kirschbaum Software GmbH UBB.threads™ copyright by Infopop Corporation.

Hier helfen sich PowerBASIC Programmierer gegenseitig ..... >> PB/CC PowerBASIC Console Compiler

Seiten in diesem Thema: 1
Norbert.Eckhardt
Mitglied 10+

Registriert: 13.04.2006
Beiträge: 20
Wohnort: Duisburg
Musik adaptieren II unter W7 neu
      #2775 - 01.11.2009 08:13

Ich hab mal das MCI Tool bei mir eingebaut und es lief bisher wunderbar und fehlerlos unter XP und W7 RC.
Jetzt hab ich W7 (Home) und seit dem gab es Probleme damit. Es spielte zuerst gar nicht mehr ab - blieb am Anfang einfach stehen - dann hab ich andere Codecs eingespielt (mit ffdshow lief es immer) wonach es jetzt zwar läuft aber mit einigen mp3's Probleme mit der Spieldauer erzeugt, wodurch sich der gleiche Titel immer wiederholt. Das Gleiche läuft unter XP immer noch fehlerfrei mit der gleichen mp3 Datei, wobei dann auch die Zeitanzeige von Anfang an stimmt. Es liegt wohl nicht daran das ich eine W7 Home Premium habe da das gleiche Problem unter W7 Professional auch besteht.
Ist das Problem bei euch auch nachvollziehbar ?
(Es ist nicht bei jeder mp3 - vermutlich hängt das mit der bitRate oder anderen mp3Faktoren zusammen.)

hier der vollständige Test Code:
'--------------------------------------
' Test MCI-Play
'
#OPTION VERSION5 'für Win ab 2000

#DEBUG ERROR ON
DEFSNG A-Z
%CCWIN = 1
#INCLUDE "WIN32API.INC"

DECLARE FUNCTION GetTickCount LIB "KERNEL32.DLL" ALIAS "GetTickCount" () AS DWORD
DECLARE FUNCTION GetShortPathName LIB "KERNEL32.DLL" ALIAS "GetShortPathNameA" (lpszLongPath AS ASCIIZ, lpszShortPath AS ASCIIZ, BYVAL cchBuffer AS LONG) AS LONG
DECLARE FUNCTION waveOutGetNumDevs LIB "WINMM.DLL" ALIAS "waveOutGetNumDevs" () AS LONG
DECLARE FUNCTION mciSendString LIB "WINMM.DLL" ALIAS "mciSendStringA" (lpstrCommand AS ASCIIZ, lpstrReturnString AS ASCIIZ, BYVAL uReturnLength AS DWORD, BYVAL hwndCallback AS DWORD) AS LONG

FUNCTION mciDevice AS DWORD
FUNCTION = waveOutGetNumDevs
END FUNCTION

FUNCTION mciOpen(filename AS ASCIIZ) AS DWORD
DIM id AS DWORD
DIM result AS DWORD
DIM buffer AS ASCIIZ * 255
IF GetShortPathName(filename, buffer, SIZEOF(buffer)) <> 0 THEN
id = GetTickCount
IF UCASE$(RIGHT$(filename, 4)) = ".MP3" THEN
result = mciSendString("open " & buffer & " type MPEGVideo alias " & HEX$(id, 8), "", 0, 0)
ELSE
result = mciSendString("open " & buffer & " alias " & HEX$(id, 8), "", 0, 0)
END IF
mciSendString("set " & HEX$(id, 8) & " time format ms", "", 0, 0)
IF result <> 0 THEN id = 0
END IF
FUNCTION = id
END FUNCTION

FUNCTION mciPlay(BYVAL id AS DWORD, BYVAL repeat AS DWORD) AS DWORD
DIM result AS DWORD
IF ISTRUE repeat THEN
result = mciSendString("play " & HEX$(id, 8) & " repeat", "", 0, 0)
ELSE
result = mciSendString("play " & HEX$(id, 8), "", 0, 0)
END IF
FUNCTION = result
END FUNCTION

FUNCTION mciStop(BYVAL id AS DWORD) AS DWORD
mciSendString("stop " & HEX$(id, 8), "", 0, 0)
FUNCTION = mciSendString("seek " & HEX$(id, 8) & " to start", "", 0, 0)
END FUNCTION

FUNCTION mciPause(BYVAL id AS DWORD) AS DWORD
FUNCTION = mciSendString("stop " & HEX$(id, 8), "", 0, 0)
END FUNCTION

FUNCTION mciResume(BYVAL id AS DWORD) AS DWORD
FUNCTION = mciSendString("resume " & HEX$(id, 8), "", 0, 0)
END FUNCTION

FUNCTION mciClose(BYREF id AS DWORD) AS DWORD
FUNCTION = mciSendString("close " & HEX$(id, 8), "", 0, 0)
id = 0
END FUNCTION

FUNCTION mciGetLength(BYVAL id AS DWORD) AS DWORD
DIM result AS DWORD
DIM length AS ASCIIZ * 16
IF mciSendString("status " & HEX$(id, 8) & " length", length, SIZEOF(length), 0) = 0 THEN result = VAL(length)
FUNCTION = result
END FUNCTION

FUNCTION mciSetPosition(BYVAL id AS DWORD, BYVAL position AS DWORD) AS DWORD
FUNCTION = mciSendString("seek " & HEX$(id,8) & " to" & STR$(position), "", 0, 0)
END FUNCTION

FUNCTION mciGetPosition(BYVAL id AS DWORD) AS DWORD
DIM result AS DWORD
DIM position AS ASCIIZ * 16
IF mciSendString("status " & HEX$(id, 8) & " position", position, SIZEOF(position), 0) = 0 THEN result = VAL(position)
FUNCTION = result
END FUNCTION

FUNCTION mciSetVolume(BYVAL id AS DWORD, BYVAL volume AS DWORD) AS DWORD
FUNCTION = mciSendString("setaudio " & HEX$(id, 8) & " volume to" & STR$(volume), "", 0, 0)
END FUNCTION

FUNCTION mciGetVolume(BYVAL id AS DWORD) AS DWORD
DIM result AS DWORD
DIM volume AS ASCIIZ * 16
IF mciSendString("status " & HEX$(id, 8) & " volume", volume, SIZEOF(volume), 0) = 0 THEN result = VAL(volume)
FUNCTION = result
END FUNCTION

FUNCTION mciSetLeftVolume(BYVAL id AS DWORD, BYVAL volume AS DWORD) AS DWORD
FUNCTION = mciSendString("setaudio " & HEX$(id, 8) & " left volume to" & STR$(volume), "", 0, 0)
END FUNCTION

FUNCTION mciSetRightVolume(BYVAL id AS DWORD, BYVAL volume AS DWORD) AS DWORD
FUNCTION = mciSendString("setaudio " & HEX$(id, 8) & " right volume to" & STR$(volume), "", 0, 0)
END FUNCTION

FUNCTION mciGetLeftVolume(BYVAL id AS DWORD) AS DWORD
DIM result AS DWORD
DIM volume AS ASCIIZ * 16
IF mciSendString("status " & HEX$(id, 8) & " left volume", volume, SIZEOF(volume), 0) = 0 THEN result = VAL(volume)
FUNCTION = result
END FUNCTION

FUNCTION mciGetRightVolume(BYVAL id AS DWORD) AS DWORD
DIM result AS DWORD
DIM volume AS ASCIIZ * 16
IF mciSendString("status " & HEX$(id, 8) & " right volume", volume, SIZEOF(volume), 0) = 0 THEN result = VAL(volume)
FUNCTION = result
END FUNCTION

'-------- Programm beginn
FUNCTION PBMAIN () AS LONG

DIM id AS DWORD
IF mciDevice=0 THEN ?"No sound device found!":SLEEP 2000:GOTO exit_mci
id = mciOpen("test.mp3") ' test mp3 sollte im aktuellen verzeichniss sein
IF id = 0 THEN ? "Can't open file!":SLEEP 2000:GOTO exit_mci

mciPlay(id, 1)

mci_warten:
g$=INKEY$:IF g$=CHR$(27) THEN mciStop(id):mciClose(id):GOTO exit_mci
IF g$=" " THEN ' schnell vorspulen damit man beim testen nicht so lage warten muß
mciGetposition (id) TO position&
position&=position&+6000:
IF position&>length&-10000 THEN position&=length&-10000
mcisetposition (id,position&)
mciplay(id,position&)
END IF

LOCATE 7,7:? "abspielen ..> test.mp3"
mciGetLength (id) TO length&
mciGetposition (id) TO position&
noch%=INT((length&-position&)/1000)
LOCATE 9,7:?"noch "INT(noch%/60)" Minuten und "noch%-(INT(noch%/60)*60)" Sec. "

IF noch%<3 THEN 'titel ende in 2-3 Sekunden
SLEEP 3000
mciStop(id):mciClose(id)
ELSE
SLEEP 200:GOTO mci_warten
END IF

exit_mci:

END FUNCTION
'------------------------------------------------




Extras: Beitrag drucken   Auf den Merkzettel   Moderator benachrichtigen  
Detlev * Wulff
Mitglied 50+

Registriert: 09.02.2005
Beiträge: 54
Wohnort: Schleswig-Holstein, Kiel
Re: Musik adaptieren II unter W7 neu
      #2786 - 12.11.2009 15:58

Lieber Norbert,

compiliert mit unter PB5.02CC auf XP funktioniert nur die Anzeige "Nix gefunden" und Tschüß!

Liebe Grüße aus Kiel
Detlev

Extras: Beitrag drucken   Auf den Merkzettel   Moderator benachrichtigen  
Norbert.Eckhardt
Mitglied 10+

Registriert: 13.04.2006
Beiträge: 20
Wohnort: Duisburg
Re: Musik adaptieren II unter W7
      #2791 - 15.11.2009 20:38

Heist 'Nix gefunden' jetzt 'No Sound Device' also kein MCI Gerät gefunden oder
ist in der Zeile

id = mciOpen("test.mp3") ' test mp3 sollte im aktuellen verzeichniss sein

die Datei 'test.mp3' nicht gefunden worden.
Test.mp3 muß natürlich im Verzeichniss vorhanden sein oder eine andere (vorhandene) mp3 statt dessen hier eintragen werden.
(Hätte ich wohl vorher explizit nochmal drauf hinweisen müssen das hier eine vorhandene mp3 eingetragen werden muss.)
Wie anfangs beschrieben läuft das Programm bei mir unter XP und W7 (PBCC4.04).
Nur das eben bei W7 die Spieldauer nur noch bei manchen Titeln stimmt wodurch dann eben der Endlos Effekt auftritt.
Ich vermute das andere mci-player unter W7 da ein vergleichbares Problem haben werden.
Es wäre für mich ärgerlich wenn ich deswegen diese Funktion aus meinem Programmen wieder ausbauen müsste.


Extras: Beitrag drucken   Auf den Merkzettel   Moderator benachrichtigen  
Seiten in diesem Thema: 1


Statistiken
0 registrierte Benutzer und 4 Besucher in diesem Forum.

Moderator:  Josef Kirschbaum 

Thema drucken

Rechte
      Sie können keine neuen Themen erstellen
      Sie können keine neuen Antworten erstellen
      HTML ist deaktiviert
      UBBCode ist aktiviert

Bewertung:
Thema gelesen: 807

Bewerten Sie dieses Thema
 
Sprung zu

Kontaktformular | Datenschutzerklärung zur PowerBASIC Startseite



UBB.threads™ 6.2.1