そのトピックに関する他のすべての投稿を読んで試しましたが、何も役に立ちませんでした。Mix_PlayChannel() で音楽を再生しようとしても、エラーは発生せず、音も聞こえません! 何時間も試しましたが、何も役に立ちません。プログラムは楽しく終了します。でも無音!Ubuntu 12.04 64 ビットを使用しています。
ありがとう!
[編集]
私が使用するコードは次のとおりです。
#include <iostream>
#include <SDL/SDL.h>
#include <SDL/SDL_mixer.h>
int main(int argc, char** argv) {
Mix_Music *music = NULL;
Mix_Chunk *wave = NULL;
SDL_Init(SDL_INIT_AUDIO);
int audio_rate = 44100;
Uint16 audio_format = AUDIO_S16; /* 16-bit stereo */
int audio_channels = 1;
int audio_buffers = 4096;
if(Mix_OpenAudio(audio_rate, audio_format, audio_channels, audio_buffers) < 0) {
printf("Unable to open audio!\n");
exit(1);
}
if(Mix_Init(MIX_INIT_MOD) != MIX_INIT_MOD)
std::cout << "errer";
Mix_Volume(-1, MIX_MAX_VOLUME);
music = Mix_LoadMUS("1.wav");
wave = Mix_LoadWAV("1.wav");
if (music == NULL) {
std::cout << "Could not load 1.wav\n";
std::cout << Mix_GetError();
}
if (wave == NULL) {
std::cout << "Could not load 1.wav\n";
std::cout << Mix_GetError();
}
Mix_VolumeChunk(wave, MIX_MAX_VOLUME);
Mix_VolumeMusic(MIX_MAX_VOLUME);
Mix_PlayMusic(music, 0);
std::cout << Mix_GetError();
Mix_FadeInChannelTimed(-1, wave, 0, 100,1);
std::cout << Mix_GetError();
return 1;
}
PlayMusic() と Mix_FadeInChannelTimed() の両方を試します。両方のファイルが正しく読み込まれますが、再生されません。サウンドはミュートされず、wav ファイルは aplay などのツールで再生できます。すべてのチャンネルが開いていて、低すぎないことを alsamixer で確認します。