【发布时间】:2020-10-21 02:32:12
【问题描述】:
我使用 SDL2_Mixer 在 Linux Ubuntu 16.04 上播放声音。 这是我的课程代码。
bool SoundPlayer::init()
{
if (SDL_Init(SDL_INIT_AUDIO) < 0)
{
LOG(ERROR)<<"init failed.\n";
}
LOG(INFO)<<"Speaker SDL init succeeded.";
volume = DEFAULT_VOLUME;
if(Mix_OpenAudio(MIX_DEFAULT_FREQUENCY, MIX_DEFAULT_FORMAT, 2, 4096) == -1)
{
LOG(ERROR)<<"audio not found,"<<Mix_GetError();
is_init = false;
}
else
{
is_init = true;
}
return is_init;
}
启动程序
- Process A 静态声明的 SoundPlayer 类。
- 进程 A 由另一个进程 B 启动。
- 系统进程管理工具
supervisord在系统启动后立即启动进程B。
问题描述
-
系统启动后,进程A无法成功播放声音,出现
ALSA: Couldn't open audio device: No such file or directory。 -
但是,在我使用 teamviewer 远程登录系统后,声音播放良好。进程 A 从未重新启动,但
SoundPlayer类再次启动 -
另外一种情况是,系统启动后,我编译了一个播放声音的测试程序,在终端手动启动,声音也很好。
我很困惑,想知道我是在系统启动后错过了什么还是其他什么?
【问题讨论】:
标签: c++ linux audio ubuntu-16.04 sdl-2