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

Nyran

Frischling

  • »Nyran« ist der Autor dieses Themas

Beiträge: 14

Wohnort: Thüringen

Beruf: Zivi

  • Private Nachricht senden

1

05.04.2010, 23:47

[SOLVED] OGGs werden von SDL_Mixer nicht abgespielt

Hallo zusammen,
ich bin derzeit dabei meinem kleinen Rollenspiel Sound hinzuzufügen. Meine SDL-Version ist 1.2.14.0 und für den Sound benutze ich den SDL_Mixer Version 1.2.7.0 bzw 1.2.11 (habe es mit beidem getestet). Der Mixer funktioniert wunderbar und spielt die BGMs einwandfrei ab, allerdings nur als *.wav oder *.midi . Wenn ich, zugunsten der Größe der Projektmappe, versuche *.ogg-Dateien zu laden, gelingt dies ebenfalls, allerdings höre ich keinen Sound. Ich bekomme also keine Fehlermeldung, höre allerdings auch nichts. Hat jemand das selbe Problem, bzw. eine Idee zur Lösung? Ich habe bereits gelesen, dass Leute, die eine Fehlermeldung bekommen haben teilweise Erfolge erzielt haben, indem sie die "SDL_Mixer.lib" neu kompiliert haben, allerdings weiß ich weder, ob das mein Problem behebt oder wie das funktioniert. Kennt vielleicht jemand ein hilfreiches Tutorial zum erzeugen einer Library-Datei aus einer Makefile ?

Ich bedanke mich schon einmal im voraus für eventuelle Lösungsansätze!

MfG Nyran
http://walkingkatze.wa.funpic.de/Speedy.GIF

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Nyran« (06.04.2010, 19:42)


2

06.04.2010, 14:33

Dieses Problem hatte ich auch mal, da war die ogg Datei nicht im selben Ordner ;)

Nyran

Frischling

  • »Nyran« ist der Autor dieses Themas

Beiträge: 14

Wohnort: Thüringen

Beruf: Zivi

  • Private Nachricht senden

3

06.04.2010, 14:53

Ne, das isses leider nicht. Ich hab im Sound Ordner ein Thema einmal als *.wav und einmal als *.ogg, ansonsten ham die beiden Dateien den gleichen Namen. Wenn ich nun im Quelltext das "wav" in "ogg" ändere, höre ich nichts. Aber danke für den Versuch.
http://walkingkatze.wa.funpic.de/Speedy.GIF

4

06.04.2010, 17:10

Wie spielst du das OGG File ab? Genauso wie das Wav File?
Benutzt habe ich selber nur die SFML aber wenn ich folgende Tutorials vergleiche
Playing Wave
Playing OGG
zeigt sich da doch eine andere Vorgehensweise.

Nyran

Frischling

  • »Nyran« ist der Autor dieses Themas

Beiträge: 14

Wohnort: Thüringen

Beruf: Zivi

  • Private Nachricht senden

5

06.04.2010, 17:33

Wenn ich jetzt beide Tutorials anschaue, besteht der Unterschied ja eigentlich nur darin, dass bei *.wav die Funktion Mix_LoadWAV benutzt wird und bei *.ogg entsprechend Mix_LoadMUS. Allerdings werden WAVs auch durch LoadMUS geladen (hab die vorher ebenfalls mit der Methode abgespielt).

Hier ist mal der Quelltext zur für das Laden und Spielen der BGM:

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
void CSound::LoadMusic(const std::string sFilename,int Volume)
{
    //Initialisieren

    if(Mix_OpenAudio(m_audio_rate, m_audio_format, m_audio_channels, m_audio_buffers) != 0) {
        std::cout << "Konnte Sound nicht starten: " << Mix_GetError() << std::endl;
    }

    //Hintergrundmusik

    //Datei laden

    m_pmusic = Mix_LoadMUS(sFilename.c_str ());
   
    if(m_pmusic == NULL) {
        std::cout << "Konnte Music WAV File nicht laden: " << Mix_GetError() << std::endl;
    }

    //Lautstärke für Hintergrundmusik einstellen

    //Volume soll ein Wert zwischen 0 und 128 sein.

    Mix_VolumeMusic(Volume);

}//Ende LoadMusic


//PlayMusic()

//Aufgabe: Eine Hintergrundmusik abspielen

void CSound::PlayMusic()
{

    //Musik abspielen

    if(Mix_PlayMusic(m_pmusic, -1) == -1) {
        std::cout << "Konnte Music WAV File nicht abspielen: " << Mix_GetError() << std::endl;
    }

}//Ende PlayMusic()


Mhm, nun noch einmal alles zum zehnten mal gelinkt.. Kompiliert hab ich selbst nichts mehr.. Ich würde gerne sagen, woran es lag, aber ich weiß es leider nicht. Wenn ich genaueres weiß, editier ich den Beitrag noch einmal. Ansonsten bedanke ich mich noch einmal für alle Lösungsansätze!

MfG Nyran
http://walkingkatze.wa.funpic.de/Speedy.GIF

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Nyran« (06.04.2010, 19:44)


6

06.04.2010, 20:02

Ich kann jetzt auch nur raten, da ich nicht weiß, was du geändert hast.
Bezogen auf die Tutorials wurde für Wav der Typ Mix_Chunk und für OGG der Typ Mix_Music verwendet

Nyran

Frischling

  • »Nyran« ist der Autor dieses Themas

Beiträge: 14

Wohnort: Thüringen

Beruf: Zivi

  • Private Nachricht senden

7

06.04.2010, 20:14

Mhm, ne, das ist ja der Witz, ich hab nichts im Quelltext verändert. Es ist vermutlich was viel banaleres, man möge mir verzeihen. Scheinbar hab ich einfach nicht alle *.dll Dateien im Projektordner gehabt und eine Fehlermeldung gibt es scheinbar nur, wenn z.B. die
"libvorbis-0.dll" fehlt. Fehlt nun aber die "libvorbisfile-3.dll" kommt keine Fehlermeldung, aber man hört keinen Sound. Aber danke für die Mühen :) Zur Vollständigkeit kann ich ja nochmal, für alle, die eventuell das selbe Problem haben/haben werden, die dll-Dateien aus der Projektmappe auflisten.

SDL.dll //ist klar, für die SDL
SDL_mixer.dll //dürfte Hauptlibrary für SDL_Mixer sein (berichtigt mich ggf :pinch: )

Ansonsten hab ich jetzt ausprobiert, welche von den unzähligen Dlls nun noch für die oggs unabdingbar sind. Das sind:

libogg-0.dll
libvorbis-0.dll
libvorbisfile-3.dll


So, das war's nun erstmal =)

Man sieht dann irgendwann mal eine Beta, wenn ich die Story noch ein wenig erweitert hab, derzeit ist es noch ein wenig kurz. Bis dann

Nyran
http://walkingkatze.wa.funpic.de/Speedy.GIF

Werbeanzeige