MP3s intern abspielen
-
aber mal ganz am rande. guck mal in die faq, da steht wie man mp3s abspielt mit der mci-schnittstelle
-
Vergess MCI.
Nimm FMOD, ist eine Libary spezialisiert auf Sound und es ist frei für
nicht kommerzielle Software.Devil
-
Vergess MCI.
Das heisst "Vergiss"
-
Original erstellt von <The Forgotten>:
Das heisst "Vergiss"Oh, danke...
-
Original erstellt von devil81:
**Vergess MCI.
Nimm FMOD, ist eine Libary spezialisiert auf Sound und es ist frei für
nicht kommerzielle Software.Devil**
Ich hab mir FMOD schonmal angeschaut, aber fand es etwas verwirrend
Egal, ich probiers nochmal...
-
tut mir leid, aber bei FMOD steig ich 0 durch.
Hab da Lauter Ordner vor mir und weiß damit nix anzufangen
-
dann lass es!
-
Original erstellt von <tipp>:
dann lass es!Hier wird man ja wirklich gut geholfen, geschweige denn Motiviert.
Ok lass ichs halt, der kram is sowieso Schwul
-
würde dir code helfen, wie mans mit direct-x macht?
-
kann dir code geben, wie du es schaffst, mp3 abzuspielen mit fmod.
es ist nicht so schwer...Devil
-
Original erstellt von devil81:
**kann dir code geben, wie du es schaffst, mp3 abzuspielen mit fmod.
es ist nicht so schwer...Devil**
mir kannst du ihn auch geben;)
Wäre schon mal interessant - habe sowas noch nie gemacht
-
Dann werd ich wohl meine FMOD klasse heute abend umschreiben
Devil
-
Original erstellt von devil81:
**kann dir code geben, wie du es schaffst, mp3 abzuspielen mit fmod.
es ist nicht so schwer...Devil**
Danke wäre nett
Wenigstens einer der mir helfen will
-
Original erstellt von Perner:
Danke wäre nett
Wenigstens einer der mir helfen willzwei. aber meinen willste ja nicht.
-
Original erstellt von volkard:
**
zwei. aber meinen willste ja nicht.**lern du erst mal c++
:p
Devil
[ Dieser Beitrag wurde am 14.11.2002 um 14:15 Uhr von devil81 editiert. ]
-
Original erstellt von devil81:
**lern du erst mal c++:p
**Kann es sein, daß Du mich mit jemandem verwechselst?
-
Original erstellt von volkard:
**
Kann es sein, daß Du mich mit jemandem verwechselst?**Das war ironisch gemeint...
Besser als du kann es hier denk ich keiner...Devil
[ Dieser Beitrag wurde am 14.11.2002 um 15:29 Uhr von devil81 editiert. ]
-
Original erstellt von devil81:
**Besser als du kann es hier denk ich keiner...
**jo, keiner in meinem wohnzimmer. *g*
aber bevor wir uns ins vegleichen vertiefen, ein müßiges thema, lenk ich mal mit meiner mp3-klasse ab.
dx ist nämlich in seltenen fällen gar nicht so schwer. das problem sind die dokus von ms, die offensichtlich absichtlich noch komplizierter geschrieben wurden als der c++-standard.//copyright by Volkard #include <windows.h> #include <control.h> #include <strmif.h> #include <uuids.h> #include <evcode.h> #include <errors.h> #pragma comment(lib,"strmiids") #pragma comment(lib,"quartz") void check(HRESULT hResult) { if(FAILED(hResult)) throw hResult; } class Mp3Player { private: IGraphBuilder* pigb; IMediaControl* pimc; IMediaEvent* pime; IMediaPosition* pimp; WCHAR* fileName; public: Mp3Player() :pigb(0) ,pimc(0) ,pime(0) ,pimp(0) { check(CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC_SERVER,IID_IGraphBuilder,(void **)&pigb)); check(pigb->QueryInterface(IID_IMediaControl,(void **)&pimc)); check(pigb->QueryInterface(IID_IMediaEvent,(void **)&pime)); check(pigb->QueryInterface(IID_IMediaPosition,(void **)&pimp)); } ~Mp3Player() { if(pime) pime->Release(); if(pimc) pimc->Release(); if(pigb) pigb->Release(); if(pimp) pimp->Release(); } void PlayFile (WCHAR* wFile) { check(pigb->RenderFile(wFile, NULL)); check(pimc->Run()); } double getCurrentPos() { REFTIME curTime; check(pimp->get_CurrentPosition(&curTime)); return curTime; } double getDuration() { REFTIME maxTime; check(pimp->get_Duration(&maxTime)); return maxTime; } bool isRunning() { LONG completion; pime->WaitForCompletion(0,&completion); return completion!=EC_COMPLETE; } };
und ne kleine main, genau die, die mich seit wochen mit musik bedudelt:
#pragma warning(disable:4786) #include "mp3.h" #include <conio.h> #include <iostream> #include <iomanip> #include <vector> #include <string> #include <fstream> #include <algorithm> #include <ctime> using namespace std; void test() { vector<string> files; ifstream in("dir.txt"); string file; while(getline(in,file)) { files.push_back(file); } random_shuffle(files.begin(),files.end()); for(vector<string>::iterator i=files.begin();i!=files.end();++i) { cout<<*i<<endl; try { WCHAR *wFile=new WCHAR[i->size()+1]; MultiByteToWideChar(CP_ACP,0,i->c_str(),-1,wFile,i->size()+1); Mp3Player m; m.PlayFile(wFile); while(m.isRunning()) { cout.setf(ios::fixed); cout<<setprecision(1); cout<<m.getCurrentPos(); cout<<'/'; cout<<m.getDuration(); cout<<'\r'<<flush; Sleep(100); if(kbhit()) { switch(getch()) { case 's': goto raus; break; case 'q': return; } } } } catch(HRESULT hResult) { TCHAR text[MAX_ERROR_TEXT_LEN]; AMGetErrorText(hResult,text,MAX_ERROR_TEXT_LEN); cout<<"Error: "<<text<<endl; } raus:; } } int main(int, char** argv) { srand(time(0)); CoInitialize(0); test(); CoUninitialize(); return 0; }
hoffentlich sieht PeterTheMaster das goto dort und verbietet es mir.
-
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.