Signatur
Beschreibung
openal_source_pause() versetzt eine zuvor mit openal_source_play() gestartete OpenAL-Audioquelle in den Pause-Zustand. Die aktuelle Abspielposition bleibt dabei erhalten, sodass die Wiedergabe mit openal_source_play() an genau dieser Stelle fortgesetzt werden kann.
Diese Funktion ist nützlich, wenn eine Audioausgabe vorübergehend unterbrochen werden soll – beispielsweise bei einem Spielmenü, einem Ladevorgangs-Bildschirm oder einer Benutzerinteraktion – ohne den Wiedergabepuffer neu laden zu müssen.
Die OpenAL-Erweiterung für PHP ist eine PECL-Erweiterung und muss separat installiert und aktiviert werden. Sie ermöglicht die Nutzung der OpenAL-Audiobibliothek direkt aus PHP heraus, z. B. für Spielprojekte oder interaktive Medienanwendungen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $source Pflicht | resource | Eine gültige OpenAL-Quellen-Ressource, wie sie von openal_source_create() zurückgegeben wird. |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler, etwa wenn die übergebene Ressource ungültig ist oder sich die Quelle in einem nicht pausierbaren Zustand befindet.Beispiele
Audioquelle pausieren und fortsetzen
<?php
// OpenAL-Gerät öffnen und Kontext erstellen
$device = openal_device_open();
$context = openal_context_create($device);
openal_context_current($context);
// Puffer erstellen und WAV-Datei laden
$buffer = openal_buffer_create();
openal_buffer_loadwav($buffer, 'sound.wav');
// Quelle erstellen und Puffer zuweisen
$source = openal_source_create();
openal_source_set($source, AL_BUFFER, $buffer);
// Wiedergabe starten
openal_source_play($source);
echo "Wiedergabe gestartet.\n";
// Kurz warten (simuliert Benutzerinteraktion)
sleep(2);
// Wiedergabe pausieren
if (openal_source_pause($source)) {
echo "Wiedergabe pausiert.\n";
} else {
echo "Pausieren fehlgeschlagen.\n";
}
// Weitere 1 Sekunde warten, dann fortsetzen
sleep(1);
openal_source_play($source);
echo "Wiedergabe fortgesetzt.\n";
// Aufräumen
openal_source_stop($source);
openal_source_destroy($source);
openal_buffer_destroy($buffer);
openal_context_destroy($context);
openal_device_close($device);
?>
Zustand der Quelle nach dem Pausieren prüfen
<?php
$device = openal_device_open();
$context = openal_context_create($device);
openal_context_current($context);
$buffer = openal_buffer_create();
openal_buffer_loadwav($buffer, 'music.wav');
$source = openal_source_create();
openal_source_set($source, AL_BUFFER, $buffer);
openal_source_play($source);
sleep(1);
openal_source_pause($source);
// Quellzustand abrufen (AL_PAUSED = 0x1013)
$state = openal_source_get($source, AL_SOURCE_STATE);
if ($state === AL_PAUSED) {
echo "Quelle ist pausiert.\n";
}
openal_source_destroy($source);
openal_buffer_destroy($buffer);
openal_context_destroy($context);
openal_device_close($device);
?>
// Wichtig · Fallstricke
Hinweis zur Verfügbarkeit: Die OpenAL-Erweiterung ist keine Standard-PHP-Erweiterung und muss über PECL installiert werden (pecl install openal). Außerdem muss die systemeigene OpenAL-Bibliothek vorhanden sein. Ab PHP 8 ist die Unterstützung dieser Erweiterung eingeschränkt und möglicherweise nicht mehr aktiv gepflegt.
Ein Aufruf von openal_source_pause() auf einer Quelle, die sich bereits im Pause- oder Stopp-Zustand befindet, hat keinen Effekt und gibt dennoch true zurück. Im Gegensatz dazu setzt openal_source_stop() die Abspielposition auf den Anfang zurück.