Start · Sprachen · PHP · Referenz · openal_buffer_loadwav

openal_buffer_loadwav

Funktion

Lädt eine WAV-Audiodatei in einen OpenAL-Puffer und bereitet ihn für die Wiedergabe vor.

Kategorie: misc

Signatur

openal_buffer_loadwav(resource $buffer, string $wavfile): bool

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

Typ
bool
Beschreibung
Gibt 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;
Wiedergabe abgeschlossen.

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);
Fehler: Datei "/pfad/zur/nichtexistent.wav" konnte nicht geladen werden.

// 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.