Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Wave oder Mp3 Datei abspielen???

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
05.10.2002, 19:02 Uhr
Programmer



Hi!
Ich möchte ein progg schreiben, dass mit MUSIK läuft!!
Wie muss ich das machen?

Muss ich des in OnInitDialog abspielen lassen?
Und wie spiele ich WAVE Dateien ab??? Mit PlaySound? Aber wie?
Und wie mach ich das mit MP3s??
Vielen Dank schon zum voruas

Mfg
Pro
--
Moderator werden? Null Problemo!! Werden gesucht auf:
http://4116.rapidforum.com

Visti www.it-center.ch.tf
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.10.2002, 20:05 Uhr
~Klaus
Gast



C++:
#pragma comment(lib, "winmm.lib")
#include "mmsystem.h"


// Spielt die MP 3 ab mit FileName als DateiNamen
int CPlayerDlg::PlayMp3(CString sFileName)
{
    CString sCommand;

     // Eine Datei öffnen und als Device-Alias "Player" setzen:
    
    sCommand = "open " +sFileName+ " alias Player shareable";
   // Wurde von unixtom geändert


    // Wenn es nicht klappt 0 zurück
    if (mciSendString(sCommand,NULL,NULL,NULL)!=0) return 0;
  
     // Das Zeitformat auf Millisekunden setzen:
     sCommand = "set Player time format milliseconds";
     if (mciSendString(sCommand,NULL,NULL,NULL)!=0)return 0;
    
     // Die Wiedergabe starten:
     sCommand = "play Player";
     if (mciSendString(sCommand,NULL,NULL,NULL)!=0)return 0;
    
    return 1;
}

int CPlayerDlg::StopPlayer()
{
    // Den Player stoppen
    if (mciSendString("stop Player", NULL, NULL, NULL)!=0)return 0;
    if (mciSendString("close Player", NULL, NULL, NULL)!=0)return 0;
    // Wurde von unixtom hinzugefügt sonst kann man das File nicht
    // mehr nach einem Stop erneut anspielen

    return 1;
}

// PlayPosition holt die aktuelle Position und gibt sie als String zurück
CString CPlayerDlg::GetPlayPosition()
{
    CString sPostitionStat;
    char szRetVal[MAX_PATH];
    int isec;
  
    if (mciSendString("status Player position", szRetVal, MAX_PATH, NULL)!=0)return sPostitionStat;

    isec=atoi(szRetVal) / 1000;   // Wird in Sekunden umgerechnet
    COleDateTimeSpan dtsZeitStatus;
    dtsZeitStatus.SetDateTimeSpan(0,0,0,isec); //Eingeben
    
    sPostitionStat = dtsZeitStatus.Format("%X"); //Wird in Format gebracht
    return sPostitionStat;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.10.2002, 00:28 Uhr
Tobi



Hi!

oder mit DirectSound


Code:
#include "stdafx.h"
#include "stdio.h"
#include "dshow.h"

#pragma comment (lib,"amstrmid.lib")
#pragma comment (lib,"strmiids.lib")

IGraphBuilder *GB=NULL;
IMediaControl *MC=NULL;
IMediaEventEx *ME=NULL;
IBasicAudio   *BA=NULL;
IMediaSeeking *MS=NULL;



und als zum Laden einer Datei

Code:
HRESULT LoadFile(const char *name)
{
    HRESULT hres;
    //create graphbuilder
    hres=CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC_SERVER,IID_IGraphBuilder,(void **)&GB);
    if(hres!=S_OK)
        return hres;
    WCHAR wFile[MAX_PATH];
    MultiByteToWideChar(CP_ACP,0,name,-1,wFile,MAX_PATH);
    //call codec, which will render our audiofile
    hres=GB->RenderFile(wFile,NULL);
    if(hres!=S_OK)
        return hres;
    //create mediacontrol for play and stop
    hres=GB->QueryInterface(IID_IMediaControl,(void **)&MC);
    if(hres!=S_OK)
        return hres;
    //cretae mediaevent
    hres=GB->QueryInterface(IID_IMediaEventEx,(void **)&ME);
    if(hres!=S_OK)
        return hres;
    //create seekingobject for get & set streampointer
    hres=GB->QueryInterface(IID_IMediaSeeking,(void **)&MS);
    if(hres!=S_OK)
        return hres;
    //call audiointerface
    hres=GB->QueryInterface(IID_IBasicAudio,(void **)&BA);
    
    return hres;
}



Wenn du eine Datei geladen hast, dann hast du folgende Möglichkeiten:

Code:
MC->Run();//Abspielen der Datei
MC->Stop();//Anhalten
__int64 current, end;
MS->GetPositions(&cur,&end);//Positonen holen
SetPos(__int64 pos)
{
if(MS->SetPositions(&pos,AM_SEEKING_AbsolutePositioning,NULL,NULL)!=S_OK)return FALSE;
return TRUE;
}//Position setzen



Das ganze basiert auf COM, deshalb

Code:
//ganz am Anfang:
CoInitialize(NULL);

//und beim Beenden des Programms:
if(MS!=NULL)MS->Release();
if(BA!=NULL)BA->Release();
if(ME!=NULL)ME->Release();
if(MC!=NULL)MC->Release();
if(GB!=NULL)GB->Release();
CoUninitialize();



bisschen viel Code (hoff das ich nix vergessen hab), aber damit geht alles (mp3,wav,mpg...)
--
Mit Computern können wir Probleme lösen die wir ohne sie gar nicht erst hätten!

mfg

Tobi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
18.10.2002, 19:27 Uhr
Programmer



Danke!!! kann man gut gebrauchen! nehme es in meine codesammlung auf!
--
Moderator werden? Null Problemo!! Werden gesucht auf:
http://4116.rapidforum.com

Visti www.it-center.ch.tf
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
19.10.2002, 07:40 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat:
Programmer postete
Moderator werden? Null Problemo!! Werden geuscht auf


geuscht????
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: