2
#include <SDL/SDL.h>
#include <SDL/SDL_mixer.h>
#include <stdio.h>
#include <stdlib.h>
Mix_Music *play_sound = NULL;
void cleanUp();

int main(int argc, char* args[])
{

    int channel;
    int audio_rate;
    Uint16 audio_format;
    int audio_channels;
    int audio_buffers;

        if(SDL_Init(SDL_INIT_AUDIO)<0)
        printf("Error In Init");

    audio_rate = 44100;
    audio_format = AUDIO_S16;
    audio_channels = 2;
    audio_buffers = 4096;


    if(Mix_OpenAudio(audio_rate, audio_format, 2, 4096)<0) {
                 //Some error shows here

    } else {
        Mix_QuerySpec(&audio_rate, &audio_format, &audio_channels);
        printf("Opened audio at %d Hz %d bit %s (%s), %d bytes audio buffer\n", audio_rate,
                (audio_format&0xFF),
                (audio_channels > 2) ? "surround" :                         (audio_channels > 1) ? "stereo" : "mono", 
                (audio_format&0x1000) ? "BE" : "LE",
                audio_buffers );
    }

    play_sound = Mix_LoadMUS("1.mp3");

    if ( play_sound == NULL ) {
        fprintf(stderr, "Couldn't load 1.mp3: %s\n",
            SDL_GetError());
        cleanUp();
        return;
    }

        Mix_PlayMusic(play_sound, -1);


    while (Mix_PlayingMusic() || Mix_PausedMusic()) {
            SDL_Delay(100);
        }

        cleanUp();
        return 0;
}

void cleanUp()
{
     Mix_FreeMusic(play_sound);
     Mix_CloseAudio();
     SDL_Quit();
}

そして、ここに私の出力があります:

Opened audio at 44100 Hz 16 bit stereo (LE), 4096 bytes audio buffer
Couldn't load 1.mp3: Unrecognised music format

でmp3ファイルを再生する際の問題は何SDLですか?

4

2 に答える 2

1

ここに小さなフットプリントがあります!!!

#include <stdio.h>
#include <stdlib.h>
#include <SDL/SDL.h>
#include <smpeg/smpeg.h>
#include <dirent.h>

int main(int argc, char * argv[])
{
  SDL_Surface * screen;
  SMPEG *mpeg;
  SMPEG_Info info;

  /* Init SDL: */
  
  SDL_Init(SDL_INIT_VIDEO |
           SDL_INIT_AUDIO);
  
  mpeg = SMPEG_new("1.mp3",&info, 1);

  SMPEG_play(mpeg);

  do
    {
      SDL_Delay(250);
    }while(!SDL_QuitRequested() && SMPEG_status(mpeg)==SMPEG_PLAYING);
    
  SMPEG_delete(mpeg);
  SDL_Quit();
  
  return(0);
}

を使用してコンパイル

gcc `sdl-config --cflags --libs` sample.c -o sample -lSDL_mixer -lsmpeg
于 2012-12-28T06:48:58.227 に答える
1

デフォルトで WAV ファイルをサポートしていますが、mp3 を機能させるには、SMPEG ライブラリとさらに複雑なコード行が必要です。私は数年前に同じ問題に遭遇し、さまざまなフォーラムで mp3 がトリッキーであることを発見しました。私は自分のファイルをOGGに変換することになりましたが、これはかなり簡単に機能しました。

于 2012-12-18T06:41:05.740 に答える