Start · Sprachen · PHP · Referenz · openal_source_stop

openal_source_stop

Funktion

Stoppt die Wiedergabe einer OpenAL-Audioquelle sofort.

Kategorie: misc

Signatur

openal_source_stop(resource $source): bool

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

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

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;
?>
Quelle gestoppt – Wiedergabeposition zurückgesetzt. Quelle spielt erneut ab.

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