Mp3 mit MCI abspielen
-
Ist eigentlich ziemlich einfach.
Noch als Anmerkung: MCI kann Mp3s mit variabler Bitrate (VBR) nicht richtig abspielen - die Mp3s stottern wie verrückt...Inkludieren: "mmsystem.h"
Library: "winmm.lib"// Spielt eine Mp3 ab: int PlayMp3(char *filename) { char cmd[500]; // Eine Datei öffnen und als Device-Alias "mp3player" setzen: wsprintf(cmd,"open \"%s\" alias mp3player shareable",filename); if (mciSendString(cmd,NULL,NULL,NULL)!=0) { // Hat nicht geklappt! MessageBox(0,"Unable to open file","mci-error",0); return 0; } // Das Zeitformat auf Millisekunden setzen: wsprintf(cmd,"set mp3player time format milliseconds"); if (mciSendString(cmd,NULL,NULL,NULL)!=0) { // Hat nicht geklappt! MessageBox(0,"Unable to set time format ","mci-error",0); return 0; } // Die Wiedergabe starten: wsprintf(cmd,"play mp3player",filename); if (mciSendString(cmd,NULL,NULL,NULL)!=0) { // Hat nicht geklappt! MessageBox(0,"Unable to play","mci-error",0); return 0; } return 1; } // PlayStop stoppt die Wiedergabe int PlayStop() { char cmd[500]; DWORD retVal; // Wiedergabe stoppen: wsprintf(cmd, "stop mp3player"); retVal=mciSendString(cmd, NULL, 0, NULL); if (retVal!=0) { // Hat nicht geklappt! MessageBox(0,"Unable to stop playback","mci-error",0); return 0; } // Device wieder schließen und die damit verbundenen Ressourcen freigeben wsprintf(cmd,"close mp3player"); if (mciSendString(cmd,NULL,NULL,NULL)!=0) { // Hat nicht geklappt! MessageBox(0,"Unable to close device","mci-error",0); return 0; } return 1; } // PlayPosition holt die aktuelle Position // und schreibt sie in die Titelzeile eines Fensters int PlayPosition(HWND hWnd) { char cmd[500]; char retval[500]; DWORD retVal; int ms; int sek, sek2; int min, min2; int hours; // Position in Milisekunden holen: wsprintf(cmd,"status mp3player position"); retVal=mciSendString(cmd, retval, 500, NULL); if (retVal!=0) { // Hat nicht geklappt! SetWindowText(hWnd,"Unable to get position"); return 0; } // Ein bisschen rumrechnen: ms=atoi(retval); // Position in Millisekunden sek=ms/1000; // Milisekunden umgerechnet in Sekunden min=sek/60; // Die Sekunden umgerechnet in Minuten hours=min/60; // Die Minuten umgerechnet in Stunden sek2=sek-(hours*60)-(min*60); // Sekunden darf nicht größer als 60 sein.. // Das Ganze ins Stunden:Minuten:Sekunden Format bringen und in die Titelzeile schreiben: wsprintf(cmd,"%i:%i:%i",hours,min,sek2); SetWindowText(hWnd,cmd); return 1; }