gpt4 book ai didi

c++ - Linux 在使用 SDL_Mixer 的自动启动过程中无法在系统启动开始时播放声音

转载 作者:行者123 更新时间:2023-12-03 01:07:51 26 4
gpt4 key购买 nike

我使用 SDL2_Mixer 在 Linux Ubuntu 16.04 上播放声音。
这是我的类(class)代码。

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 启动。
  • 进程B由系统进程管理工具supervisord启动系统启动后。

  • 问题描述
  • 系统启动后,进程A无法成功播放声音,出现ALSA: Couldn't open audio device: No such file or directory .
  • 但是,在我使用 teamviewer 远程登录我的系统后,声音播放得很好。进程 A 从未重新启动,但 SoundPlayer又开始上课了
  • 另一种情况是,系统启动后,我编写了一个播放声音的测试程序并在终端中手动启动它,声音也播放得很好。

  • 我很困惑,想知道我是在系统启动后错过了什么还是其他什么?

    最佳答案

    没有人回应,但我得到了解决方案。
    之前我很困惑,因为我用teamviewer登录ubuntu时不知道系统做了什么。现在我知道了,我只是用一个用户进入桌面系统。
    我用 SDL_GetAudioDeviceName(0,0)显示音频设备。
    在我登录之前,它返回了dummy output .登录后返回Built-in analog output .所以这就是原因。
    为了解决这个问题,我打开 自动登录功能,它运作良好。

    关于c++ - Linux 在使用 SDL_Mixer 的自动启动过程中无法在系统启动开始时播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64455846/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com