Signatur
Beschreibung
openal_buffer_loadwav() liest eine .wav-Datei vom Dateisystem und überträgt deren PCM-Audiodaten in einen zuvor mit openal_buffer_create() erzeugten OpenAL-Puffer. Nach dem erfolgreichen Laden kann der Puffer einer OpenAL-Quelle (Source) zugewiesen und abgespielt werden.
Die Funktion gehört zur PHP-OpenAL-Erweiterung (ext/openal), die eine Bindung an die OpenAL-Bibliothek darstellt und Echtzeit-Audiowiedergabe in PHP-Anwendungen ermöglicht – primär in CLI-Skripten oder Spielen. Sie ist nicht Bestandteil der Standard-PHP-Distribution und muss separat kompiliert bzw. installiert werden.
Es werden nur unkomprimierte PCM-WAV-Dateien unterstützt. Komprimierte Formate (MP3, OGG, ADPCM etc.) werden nicht erkannt und führen zu einem Fehler. Stellen Sie sicher, dass die Datei lesbar und ein gültiges WAV-Format vorliegt, bevor Sie die Funktion aufrufen.
Nach dem Laden des Puffers sollte dieser mit einer Source über openal_source_set() verbunden und anschließend mit openal_source_play() abgespielt werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $buffer Pflicht | resource | Ein gültiges OpenAL-Puffer-Resource-Handle, das zuvor mit openal_buffer_create() erzeugt wurde. |
|
| $wavfile Pflicht | string | Der Dateipfad zur zu ladenden .wav-Datei. Es werden ausschließlich unkomprimierte PCM-WAV-Dateien unterstützt. |
Rückgabewert
true zurück, wenn die WAV-Datei erfolgreich in den Puffer geladen wurde. Bei einem Fehler (ungültige Datei, nicht lesbarer Pfad, falsches Format) wird false zurückgegeben.Beispiele
WAV-Datei laden und abspielen
<?php
// OpenAL-Gerät und -Kontext initialisieren
$device = openal_device_open();
$context = openal_context_create($device);
openal_context_current($context);
// Puffer erzeugen und WAV-Datei laden
$buffer = openal_buffer_create();
if (!openal_buffer_loadwav($buffer, '/pfad/zur/sound.wav')) {
die('Fehler: WAV-Datei konnte nicht geladen werden.');
}
// Quelle erzeugen und Puffer zuweisen
$source = openal_source_create();
openal_source_set($source, AL_BUFFER, $buffer);
// Audio abspielen
openal_source_play($source);
// Warten bis die Wiedergabe beendet ist
do {
usleep(100000);
$state = openal_source_get($source, AL_SOURCE_STATE);
} while ($state === AL_PLAYING);
// Ressourcen freigeben
openal_source_destroy($source);
openal_buffer_destroy($buffer);
openal_context_destroy($context);
openal_device_close($device);
echo 'Wiedergabe abgeschlossen.' . PHP_EOL;
Fehlerbehandlung beim Laden
<?php
$device = openal_device_open();
$context = openal_context_create($device);
openal_context_current($context);
$buffer = openal_buffer_create();
$wavFile = '/pfad/zur/nichtexistent.wav';
if (openal_buffer_loadwav($buffer, $wavFile)) {
echo 'Puffer erfolgreich befüllt.' . PHP_EOL;
} else {
echo 'Fehler: Datei "' . $wavFile . '" konnte nicht geladen werden.' . PHP_EOL;
}
openal_buffer_destroy($buffer);
openal_context_destroy($context);
openal_device_close($device);
// Wichtig · Fallstricke
Erweiterungsverfügbarkeit: Die OpenAL-Erweiterung für PHP (ext/openal) ist nicht im PHP-Core enthalten und muss manuell installiert werden. Sie ist vorwiegend für Linux/Unix-Systeme mit installierter OpenAL-Bibliothek verfügbar.
Dateiformat: Nur unkomprimierte PCM-WAV-Dateien werden unterstützt. Komprimierte WAV-Varianten oder andere Audioformate führen zu einem Fehler. Konvertieren Sie die Audiodatei gegebenenfalls vorher in das korrekte Format (z. B. mit ffmpeg -i input.mp3 -acodec pcm_s16le output.wav).
Speicherverwaltung: Puffer-Ressourcen sollten nach der Verwendung stets mit openal_buffer_destroy() freigegeben werden, um Speicherlecks zu vermeiden.