Start · Sprachen · PHP · Referenz · openal_source_pause

openal_source_pause

Funktion

Pausiert die Wiedergabe einer OpenAL-Audioquelle, ohne die aktuelle Abspielposition zurückzusetzen.

Kategorie: misc

Signatur

openal_source_pause(resource $source): bool

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

Typ
bool
Beschreibung
Gibt 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);
?>
Wiedergabe gestartet. Wiedergabe pausiert. Wiedergabe fortgesetzt.

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);
?>
Quelle ist pausiert.

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