Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Vadammt

Frischling

  • »Vadammt« ist der Autor dieses Themas

Beiträge: 4

Beruf: Schüler

  • Private Nachricht senden

1

28.01.2012, 13:39

SDL Mixer error

Ich habe jetzt für das Konsolenfenster ein einfaches Test-Programm geschrieben, bei dem ich mit die Sound-Ausgabe mit dem SDL Mixer ausprbieren möchte. Dazu soll eine MP3 abgespielt werden. Problem: Das funktioniert nicht :D

Ich habe die SDL (und Mixer) Includedateien zu den Includeverzeichnissen, die Libs zu den Bibliotheksverzeichnissen und die SDL.lib, SDLmain.lib, SDL_mixer.lib zu den "Zusätzlichen Abhängigkeiten" hinzugefügt.

Das Programm lässt sich auch ohne Fehler/Warnungen kompilieren, aber in der CMD werden die Fehler
Mix_LoadMUS: Couldn't open 'music.mp3'
Mix_PlayMusic: music parameter was NULL
angezeigt

Die .dll-Dateien sind auch im Debug verzeichnis und die music.mp3 auch.

Danke für die Hilfe.

Der Sourcecode:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
#include <SDL.h>
#include <SDL_mixer.h>

int main (int argc, char *argv[])
{
    // Mix_Init
    //
    // Mix_Init for MP3 sample/music format
    int flags=MIX_INIT_MP3;//MIX_INIT_OGG|MIX_INIT_MOD;
    int initted=Mix_Init(flags);
    if(initted&flags != flags) {
        printf("Mix_Init: %s\n", Mix_GetError());
    // handle error
    }

    // Mix_OpenAudio
    //
    // print music decoders available
    int i,max=Mix_GetNumMusicDecoders();
    for(i=0; i<max; ++i)
        printf("Music decoder %d is for %s",Mix_GetMusicDecoder(i));

    // start SDL with audio support
    if(SDL_Init(SDL_INIT_AUDIO)==-1) {
        printf("SDL_Init: %s\n", SDL_GetError());
        exit(1);
    }
    // open 44.1KHz, signed 16bit, system byte order,
    // stereo audio, using 1024 byte chunks
    if(Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 1024)==-1) {
        printf("Mix_OpenAudio: %s\n", Mix_GetError());
        exit(2);
    }


    // load the MP3 file "music.mp3" to play as music
//  char pfad[MAX_PATH] = "F:\\Medien\\Programmieren\\C++\\Eigene Projekte\\Test undso\\music.mp3";
    Mix_Music *music;
    music=Mix_LoadMUS("music.mp3");
    if(!music) {
        printf("Mix_LoadMUS: %s\n", Mix_GetError());
    // this might be a critical error...
    }

    // play music forever
     if(Mix_PlayMusic(music, -1)==-1) {
        printf("Mix_PlayMusic: %s\n", Mix_GetError());
    // well, there’s no music, but most games don’t break without music...
    }

    system("Pause");
    return 0;
}

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Vadammt« (28.01.2012, 20:18) aus folgendem Grund: CMD!=Das Schwarze cout-Fenster


2

28.01.2012, 15:25

ich vermute mal, dass du dem Kompiler nicht klar gemacht hast, dass er die music.mp3 im Debug Ordner suchen soll. Deswegen konnte die Datei auch nicht geladen werden. Aber warte lieber bis jemand mir zustimmt oder es besser weiß. Ich bin mir auch nicht 100% sicher

Zitat

Das programm, dass ich eben geschrieben hab ließ sich ohne einen einzigen Fehler kompilieren und und funktioniert so wie es soll. Das macht mir Angst, da ist was Faul

3

28.01.2012, 15:29

Für CMD?

MfG
Check

4

28.01.2012, 15:51

es war ja auch nur eine vermutung. ich habe ja gesagt das er abwarten soll ;)

Zitat

Das programm, dass ich eben geschrieben hab ließ sich ohne einen einzigen Fehler kompilieren und und funktioniert so wie es soll. Das macht mir Angst, da ist was Faul

Vadammt

Frischling

  • »Vadammt« ist der Autor dieses Themas

Beiträge: 4

Beruf: Schüler

  • Private Nachricht senden

5

28.01.2012, 17:13

@Checkmateing:
Naja... CMD = Konsolenfenster ^_^...
[edit]: bzw. soll das heißen, dass SDL_mixer mit Konsolenfenster nicht funktionieren kann? [/edit]

aber die MP3 wird mit "music=Mix_LoadMUS("music.mp3");" geladen. Mysterious: Wenn ich einen Pfad übergebe bekomm ich einen Debugger Error (also nicht Synatx, sondern das Fenster mit Unterbrechen und Weiter)...

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Vadammt« (28.01.2012, 20:22)


Vadammt

Frischling

  • »Vadammt« ist der Autor dieses Themas

Beiträge: 4

Beruf: Schüler

  • Private Nachricht senden

6

29.01.2012, 21:28

Ich hab das jetzt (mehr oder weniger elegant) gelöst, indem ich die zwei mp3-Dateien in WAV konvertiert und dann mit PlaySound() (von windows.h) ausgegeben habe...
SDL_Mixer / SDL_Audio ist, wie schon öfter gesagt, ein bisschen nervig ?(

Aber trotzdem danke für die Lösungsvorschläge

Werbeanzeige