Signatur
Beschreibung
openal_source_stop hält die Wiedergabe einer mit openal_source_create erzeugten Audioquelle unverzüglich an. Die Quelle wechselt in den Zustand Stopped, d. h. ein anschließendes openal_source_play würde die Wiedergabe von Anfang an neu starten.
Die Funktion ist Teil der PHP-OpenAL-Erweiterung (pecl/openal), die die OpenAL-Bibliothek für räumliches Audio kapselt. Sie eignet sich überall dort, wo eine laufende Audiowiedergabe gezielt beendet werden soll, z. B. beim Schließen eines Spiellevels oder beim Umschalten von Hintergrundmusik.
Im Unterschied zu openal_source_pause kann die Wiedergabe nach einem stop nicht an der unterbrochenen Position fortgesetzt werden – sie beginnt immer von vorn. Soll eine Pause mit anschließender Fortsetzung realisiert werden, ist openal_source_pause die bessere Wahl.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $source Pflicht | resource | Eine gültige OpenAL-Quellenressource, die zuvor mit openal_source_create erzeugt wurde. |
Rückgabewert
true bei Erfolg zurück, andernfalls false (z. B. wenn die übergebene Ressource ungültig ist).Beispiele
Einfaches Starten und Stoppen einer Audioquelle
<?php
// OpenAL-Gerät und -Kontext initialisieren
$device = openal_device_open();
$context = openal_context_create($device);
openal_context_current($context);
// Puffer erstellen und mit PCM-Daten befüllen
$buffer = openal_buffer_create();
$pcmData = file_get_contents('sound.raw'); // 16-Bit, Mono, 44100 Hz
openal_buffer_data($buffer, AL_FORMAT_MONO16, $pcmData, 44100);
// 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." . PHP_EOL;
// Eine Sekunde warten, dann stoppen
sleep(1);
$result = openal_source_stop($source);
echo $result ? "Wiedergabe gestoppt." : "Fehler beim Stoppen.";
// Ressourcen freigeben
openal_source_destroy($source);
openal_buffer_destroy($buffer);
openal_context_destroy($context);
openal_device_close($device);
?>
Stoppen und erneutes Abspielen von Anfang an
<?php
// Annahme: $source ist eine bereits korrekt konfigurierte OpenAL-Quelle
// Laufende Wiedergabe stoppen
if (openal_source_stop($source)) {
echo "Quelle gestoppt – Wiedergabeposition zurückgesetzt." . PHP_EOL;
}
// Erneut von Anfang an abspielen
openal_source_play($source);
echo "Quelle spielt erneut ab." . PHP_EOL;
?>
// Wichtig · Fallstricke
Erweiterung: openal_source_stop ist Teil der PECL-Erweiterung openal, die standardmäßig nicht in PHP enthalten ist. Sie muss separat installiert werden (pecl install openal) und setzt eine funktionierende OpenAL-Systembibliothek voraus.
Zustandsunterschied: Nach einem stop befindet sich die Quelle im Zustand AL_STOPPED. Im Gegensatz dazu versetzt openal_source_pause die Quelle in AL_PAUSED, was eine Fortsetzung an der aktuellen Position erlaubt. Wird openal_source_stop auf eine Quelle angewendet, die sich bereits im Zustand Stopped oder Initial befindet, hat der Aufruf keinen Effekt, gibt aber trotzdem true zurück.