问题描述
我已经使用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;
}
开始过程
问题描述
-
在系统启动后,
ALSA: Couldn't open audio device: No such file or directory
附带的进程A不能成功播放声音。 -
另一种情况是,系统启动后,当我编译测试程序以播放声音并手动在终端中启动它时,声音也播放良好。
我很困惑,想知道我是否在系统启动后错过了什么?
解决方法
没有人回应,但是我找到了解决方案。 之前我很困惑,因为当我使用teamviewer登录ubuntu时我不知道该怎么做。现在我知道了,我只是和用户一起进入桌面系统。
我使用SDL_GetAudioDeviceName(0,0)
来显示音频设备。
在我登录之前,它返回了dummy output
。登录后,它返回了Built-in analog output
。这就是原因。
为解决此问题,我打开了自动登录功能,并且效果很好。