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;
    }
    

Anmelden zum Antworten