私はC ++プログラムを持っており、SDL2_Mixerモジュール(Pulssinkに基づいているようです)を使用してオーディオを出力します。起動時に実行したいが正しく実行されません。起動時にデフォルトのオーディオ出力デバイス、ボリュームなどを自動的に設定し、バイナリを実行するためにさまざまな方法を試しました。
まず、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;
}
端末でプログラムを手動で実行すると正常に実行されることを指摘したいと思います。オーディオ出力が機能するように起動時に自動的に実行する方法はありますか?ありがとうございます!