如何在 Linux 启动时运行二进制文件并有声音?

如何在 Linux 启动时运行二进制文件并有声音?

我有一个 C++ 程序,我使用 SDL2_Mixer 模块(我认为它基于 Pulsesink)来输出音频。我想在启动时运行它,但它不想运行得很好。我在启动时自动设置默认音频输出设备、音量等,并尝试了不同的方法来运行二进制文件。

首先,我将其包含在 Linux 启动应用程序中。然后,我在 /etc/init.d 中创建了一个脚本,该脚本应该运行二进制文件并授予执行权限。在这两种方式中,我都没有听到任何声音,即使在我进行了延迟编程之后也是如此,因此可以确保在二进制文件运行时加载并设置所有内容。

这是我的代码:

#include <SDL2/SDL_mixer.h>
#include <SDL.h>
#include <string>
#include <thread>
#include <chrono>

const char waveFileName[40] = "audio/startup_sound.wav";
Mix_Chunk* sample;

int main() {
    if (Mix_Init(MIX_INIT_FLAC | MIX_INIT_MP3 | MIX_INIT_OGG) < 0) {
        exit(-1);
    }
    memset(sample, 0, sizeof(Mix_Chunk*) * 2);
    if (Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 1024) < 0) {
        exit(-1);
    }
    Mix_AllocateChannels(2);
    sample = Mix_LoadWAV(waveFileName);
    if (sample == NULL) {
        exit(-1);
    }

    Mix_Volume(0, MIX_MAX_VOLUME);
    Mix_PlayChannel(0, sample, 0);
    std::this_thread::sleep_for(std::chrono::seconds(13));

    Mix_FreeChunk(sample);
    Mix_CloseAudio();
    Mix_Quit();

    return 0;
}

我想指出的是,当我从终端手动运行该程序时,它运行得很好。有没有办法在启动时自动执行它以便音频输出工作?谢谢!

相关内容