如何在 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;
}

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

相关内容