MP3s intern abspielen
-
thx für den Code, aber was ist mit getCurrentPos gemeint?
Soll ich da jetzt selber nen Schieberegler einfügen oder ist das für die ActiveX Windows Media Komponente gedacht?
-
Damit ist gemeint wo dein rechter Lautsprecher gerade steht.
-
Original erstellt von Perner:
thx für den Code, aber was ist mit getCurrentPos gemeint?
Soll ich da jetzt selber nen Schieberegler einfügen oder ist das für die ActiveX Windows Media Komponente gedacht?völlig egal, ob du die aktuelle position anzeigen willst, oder es sein läßt, und wenn, wie du sie anzeigst.
-
@Volkard
Wusste noch garnicht das das hier dein Wohnzimmer istNaja, hier mal meine Klasse:
fmod.h :#include <fmod.h> #include <fmod_errors.h> class CFmod { public: bool Stop(); bool Play();//-1 bei error bool Load(const char * Path, bool bplay);//läd die Mp3, entweder entpackt sie auf die Festplatte, oder läd sie direkt in den arbeitspeicher bool InitFmod(HWND Wnd, unsigned int soundchannel); CFmod(); virtual ~CFmod(); protected: bool start; // sicherstellen das init aufgerufen wird. unsigned int channel; FSOUND_STREAM* m_stream;//fmod variable für das handeln der mp3 datei char * data; // für die gelandenen daten. HWND hWnd;// window handle };
fmod.cpp
#include "Fmod.h" #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif ////////////////////////////////////////////////////////////////////// // Konstruktion/Destruktion ////////////////////////////////////////////////////////////////////// CFmod::CFmod() { hWnd = NULL; m_stream = NULL; data = NULL; channel = 0; start = false; } CFmod::~CFmod() { delete [] data; } bool CFmod::Load(const char *Path, bool bplay) { if(start) { if(data!=NULL) { delete[] data; data=NULL; } if(bplay) { FILE* datei; int length; m_stream=NULL; datei=fopen(Path,"r"); fseek(datei, 0, SEEK_END); length = ftell(datei); fseek(datei, 0, SEEK_SET); data=new char[length]; fread(data, length, 1, datei); fclose(datei); m_stream = FSOUND_Stream_OpenFile(data, FSOUND_NORMAL /*| FSOUND_LOOP_NORMAL*/ | FSOUND_2D /*/| FSOUND_MPEGACCURATEFSOUND_LOADMEMORY*/, length); } else { m_stream = FSOUND_Stream_OpenFile(Path, FSOUND_NORMAL /*| FSOUND_LOOP_NORMAL*/ | FSOUND_2D | FSOUND_MPEGACCURATE, 0); } if(!m_stream) { m_stream=NULL; return false; } else return true; } } bool CFmod::Play()//hm, spielt { if(start) { if(m_stream != NULL) { channel = FSOUND_Stream_Play(channel, m_stream); if (channel < 0) return false; else return true; } } } bool CFmod::InitFmod(HWND Wnd, unsigned int soundchannel)//Initialisiert FMOD { start = true; hWnd = Wnd; channel = soundchannel; int outputfreq = 44100; int setting_output=0; int setting_driver=0; int setting_mixer=0; setting_output = FSOUND_OUTPUT_DSOUND; FSOUND_SetBufferSize(200); FSOUND_SetOutput(setting_output); FSOUND_SetDriver(setting_driver); FSOUND_SetMixer(setting_mixer); FSOUND_SetHWND(hWnd); FSOUND_Init(outputfreq,128, 0); if (FSOUND_GetVersion() < FMOD_VERSION) { MessageBox(hWnd, FMOD_ErrorString(FSOUND_GetError()),"FMOD FEHLER",MB_OK); } if (!FSOUND_Init(44100, 32, FSOUND_INIT_GLOBALFOCUS)) { MessageBox(hWnd, FMOD_ErrorString(FSOUND_GetError()),"FMOD FEHLER",MB_OK); return false; exit(1); } return true; } bool CFmod::Stop() { return FSOUND_Stream_Stop(m_stream); }
So, das ist meine Klasse, musst noch die fmodvc.lib inkludieren, und die
dll laden. sonst nix.Devil
[ Dieser Beitrag wurde am 14.11.2002 um 18:48 Uhr von devil81 editiert. ]