簡體   English   中英

初始化SDL_Mixer會給出錯誤“沒有可用的音頻設備”

[英]Initializing SDL_Mixer gives error “No available audio device”

我正在使用SDL / SDL_Mixer播放wav文件的C ++應用程序上工作。 我一直在Mac上開發應用程序,沒有太大問題。 但是,我確實需要此應用程序才能在Linux上運行,因此我將VirtualBox放在裝有Ubuntu 12.04 LTS的Windows 7計算機上。 編譯工作正常,直到我實際嘗試初始化系統為止。 然后,SDL_Mixer給出錯誤“沒有可用的音頻設備”。

這是引發錯誤的代碼:

using namespace std;

void simple_sound_init() {
    if (SDL_Init(SDL_INIT_AUDIO) == -1) {
        fprintf(stderr, "init SDL error: %s\n", SDL_GetError());
        SDL_Quit();
        exit(1);
    }

    if (Mix_OpenAudio(SOUNDSAMPLERATE, MIX_DEFAULT_FORMAT, 1, 1024) != 0) {
        fprintf(stderr, "initialize audio error: %s\n", Mix_GetError());
        Mix_CloseAudio();
        SDL_Quit();
        exit(1);
    }

    Mix_ChannelFinished(simple_sound_channel_finised);
}

我得到的確切錯誤是:

initialize audio error: No available audio device

P / S:我已經在網上廣泛搜索了解決方案,並嘗試檢查庫的安裝等。但是,由於我可能錯過了一些東西,因此歡迎任何基本的庫建議,我將確認我的建議。設置它們。

在相同的情況下,我遇到了完全相同的問題,但是使用ubuntu 14.04LTS(虛擬盒,W7作為主機)。 但是問題不是VM配置(聲音在其他ubuntu應用程序中正常工作)。

我在這里找到了答案: http : //forums.libsdl.org/viewtopic.php?t=7609&sid=40fdb9756b8e22e1b8253cda3338845f

感謝Ryan C. Gordon寫道:

“如果您構建自己的SDL,則可能沒有PulseAudio(或ALSA)的開發標頭,因此它正在嘗試使用/ dev / dsp,而在許多現代Linux系統上則不存在(因此,SDL_Init(SDL_INIT_AUDIO)成功,但是在嘗試打開一個設備時未找到任何設備。““ apt-get install libasound2-dev libpulse-dev”並重建SDL ...讓configure腳本找到新的標頭,以便它包括PulseAudio和ALSA支持。”

我已經從源代碼有效地構建了SDL和SDL-mixer,但是沒有來自pulseAudio或ALSA的任何標頭。 安裝提到的庫並重新編譯SDL和SDL_mixer(v1.2)之后,聲音工作正常。

如果問題仍然存在,他還將討論另一種解決方案:

“如果您沒有構建自己的SDL,也許可以強迫它使用其他音頻路徑:SDL_AUDIODRIVER = pulse ./mytestprogram或SDL_AUDIODRIVER = alsa ./mytestprogram”

我沒有嘗試過,因為就我而言,第一個解決方案是好的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM