MP3 mit MCI abspielen funktioniert nicht...
-
wieso funktioniert dieses simple programm nicht? Es kommt die Fehlermeldung "Gerät ist nicht geöffnet oder wird vom MCI nicht erkannt".
auch das aus der FAQ funktioniert nicht...
P.S.: Die datei liegt im gleichen Ordner, daran kanns nicht liegen...
#include <windows.h> #pragma comment(lib, "winmm.lib") LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static TCHAR szAppName[] = "Bla"; HWND hWnd; MSG msg; WNDCLASS wndclass; wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = WndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = hInstance; wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); wndclass.lpszMenuName = NULL; wndclass.lpszClassName = szAppName; RegisterClass(&wndclass); hWnd = CreateWindow( szAppName, "Bla", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); ShowWindow(hWnd, iCmdShow); UpdateWindow(hWnd); while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } BOOL mciExecute(LPCTSTR szCommand) { MCIERROR error; TCHAR szErrorStr[1024]; if (error = mciSendString(szCommand, NULL, 0, NULL)) { mciGetErrorString(error, szErrorStr, sizeof(szErrorStr)/sizeof(TCHAR)); MessageBeep(MB_ICONEXCLAMATION); MessageBox(NULL, szErrorStr, TEXT("MCI-Fehler"), MB_OK | MB_ICONEXCLAMATION); } return error == 0; } LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_CREATE: mciExecute("open \"rammstein.mp3\" alias thesong"); mciExecute("play thesong"); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hWnd, message, wParam, lParam); }
-
ich mach das so:
mciSendString("open \"mp3/2.mp3\"", NULL, 0, NULL); mciSendString("play \"mp3/2.mp3\"", NULL, 0, NULL);
EDIT: Sorry, hab gerade gesehen dass du die mciExecute ja selber erstellst! War kompletter müll was ich gesagt hab...
EDIT2: Vielleicht liegt es daran dass der rückgabewert von mciSendString nicht vom typ MCIERROR ist? weiß nicht, ich würde es auch so machen: if(mcisendstring(blabal))
-
Auch mit absolutem Pfad ausprobiert ?
(nen mp3-codec ist auch installiert ?)
-
absoluter pfad hab ich ausprobiert, nützt auch nichts.
keine ahnung, ob ich einen mp3-codec hab, wo seh ich das bzw. wo bekomm ich sowas her?
-
Bei mir funktioniert das Programm, wird dann wohl am codec liegen
-
müsstest mit dem freeware codec lama auskommen.
-
k, hab mir jetzt lame 3.96 runtergeladen, wie kann ich das jetzt bei windows als mp3 codec "registrieren" ?
-
brauchst nicht, wenn de das installierts müsste das sofort gehen, bis auf bei gekaufter software müsstest du die lame_enc.dll linken,a ber so müsste es gehen---
-
ja da gibts irgendwie nix zu installieren, das ist bei mir einfach ein archiv mit ein paar dateien. hab jetzt rausgefunden, dass im ordner ACM die dateien sind, die ich wahrscheinlich brauche, allerdings weiß ich jetzt nicht, wie ich die als audio-codec registrieren kann.
-
kann mir hier denn keiner helfen?
-
ich will ja nicht nerven, aber ich brauch das programm wirklich so schnell wie möglich, ich will ja lediglich wissen, wie ich diesen codec installiert bekomme
-
Hast du da auch den lame-acm Codec und nicht das normale lame ?
(Lame-ACM)
Normalerweise ist bei Windows bereits ein mp3-acm-codec installiert, die allerdings beim enkodieren auf 56kbits oder so beschränkt ist...
-
hmm, also ich hab mir dieses lame runtergeladen.
da ist ne exe, mit der ich quasi per hand eine mp3 aus einer wave und andersrum erstellen kann.
im ordner html ist ne doku
im ordner misc sind diverse scripte
im ordner acm ist denk ich das, was ich brauche, jetzt weiß ich aber net, wie ich windows die sachen da beibringen soll, ich mein wenn ich mit mci eine mp3 abpspielen will, dann muss es ja wissen, wo sich der encoder befindet...MfG, Herr-Vorragend
-
okay, habs jetzt hinbekommen, und zwar muss man einfach nur rechtsklick -> installieren bei der inf-datei machen, hab ich nicht gewusst...
allerdings hat es auch nix genützt, das eigentliche problem mit der fehlermeldung besteht immernoch...
-
Du hast bei der if-Abfrag nur ein = gesetzt. Das heißt du überprüfts nicht ob es so ist sondern sagst das es so ist.
Mfg Ominion
PS: Zwar ein paar Monate her, aber der Fehler müsste damit behoben sein.