Mp3-Player: wann ist das mp3 zu ende?
-
hi leute
ich spiele mp3 wie folgt ab:
mciSendString("play MP3 from 0 notify",ReturnString,lstrlen(ReturnString), hAppWnd); // in hAppWnd wird die Notify-Msg abgefangen case MM_MCINOTIFY: if (openMp3) { if (playMp3) { Mp3Close(); if (currNr_+1 <= AllMp3s_.size()-1) // vector<string> AllMp3s_; { // - da drin sind die pfade der dateien gepeichert ++currNr_; // - wird beim öffnen eines ordners gefüllt Mp3Play(AllMp3s_[currNr_].c_str()); } else { currNr_ = 0; Mp3Play(AllMp3s_[currNr_].c_str()); } } } return 0; // ----------- void Mp3Close() { playMp3 = false; openMp3 = false; mciSendString("close MP3 wait", 0, 0, 0); } // ----------- void Mp3Play(const char * szFileName) { if (openMp3) // falls schon etwas läuft { Mp3Close(); } DWORD ErrorValue; char command[255] = ""; char ReturnString[255] = ""; // Öffnen wsprintf(command, "open \"%s\" alias MP3 wait", szFileName); if (ErrorValue = mciSendString(command,ReturnString,lstrlen(ReturnString), 0)) { char lpszErrorText[255] = ""; mciGetErrorString(ErrorValue,lpszErrorText,lstrlen(lpszErrorText)); MessageBox(hAppWnd, lpszErrorText, "OPEN MP3", MB_OK | MB_ICONERROR); return; } openMp3 = true; // öffnen hat geklappt // Das Zeitformat auf Millisekunden setzen: wsprintf(command,"set MP3 time format milliseconds"); if (mciSendString(command,ReturnString,lstrlen(ReturnString),NULL)) { MessageBox(hAppWnd,"Unable to set time format ","mci-error",0); return; } // Abspielen if (ErrorValue = mciSendString("play MP3 from 0 notify",ReturnString,lstrlen(ReturnString), hAppWnd)) { char lpszErrorText[255] = ""; mciGetErrorString(ErrorValue,lpszErrorText,lstrlen(lpszErrorText)); MessageBox(hAppWnd, lpszErrorText, "PLAY MP3", MB_OK | MB_ICONERROR); return; } playMp3 = true; // play hat geklappt }Das Problem ist relativ seltsam: zwei songs lang läuft alles normal. Dann plötzlich werden die songs geöffnet (der name wird in einem static angezeigt), und sofort der nächste song, dann der nächste.. beim ende des verzeichnisses schön brav wieder an den anfang, aber halt viel zu schnell (10ms / song oder so..)
vermutung: das abfangen der notify-message ist irgendwie problematisch (denn anscheinend wird diese sofort nach dem öffnen gesendet..)
danke für eure hilfe!
-
hat sich erledigt..
ich frage nun die aktuelle position ab. nur wenn diese grösser als 1s ist, passiert etwas.