Start · Sprachen · PHP · Referenz · openal_source_play

openal_source_play

Funktion

Startet die Wiedergabe einer OpenAL-Audioquelle (<code>source</code>).

Kategorie: misc

Signatur

openal_source_play(resource $source): bool

Beschreibung

openal_source_play() startet die Wiedergabe des an die Audioquelle gebundenen Puffers. Die Funktion gehört zur OpenAL-Erweiterung von PHP, die eine Schnittstelle zur OpenAL-Audiobibliothek bereitstellt und vor allem in Echtzeit-Audio- und Multimedia-Anwendungen eingesetzt wird.

Um eine Quelle abspielen zu können, muss zuvor mit openal_source_create() eine Quelle erzeugt, mit openal_buffer_create() und openal_buffer_data() ein Audiopuffer befüllt und anschließend per openal_source_set() mit der Quelle verknüpft worden sein. Erst dann ist die Wiedergabe mit openal_source_play() möglich.

Die Funktion ist nicht-blockierend: Sie startet die Wiedergabe und gibt sofort zurück, ohne auf das Ende des Audiostreams zu warten. Der Status der Wiedergabe lässt sich über openal_source_get() abfragen (z. B. AL_SOURCE_STATE).

Hinweis: Die PHP-OpenAL-Erweiterung ist experimentell und wird nur selten in Produktionsumgebungen eingesetzt. Sie ist insbesondere auf Server-Seite ungewöhnlich; sinnvollere Einsatzgebiete sind CLI-Anwendungen oder spielbezogene PHP-Tools.

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 zurück, wenn die Wiedergabe erfolgreich gestartet wurde, oder false bei einem Fehler (z. B. ungültige Ressource oder kein Puffer gebunden).

Beispiele

Einfache Wiedergabe einer WAV-Datei über OpenAL

<?php
// OpenAL-Gerät öffnen
$device = openal_device_open();
if (!$device) {
    die('OpenAL-Gerät konnte nicht geöffnet werden.');
}

// Kontext erzeugen und aktiv setzen
$context = openal_context_create($device);
openal_context_current($context);

// Puffer erzeugen und mit PCM-Daten füllen
$buffer = openal_buffer_create();
$wavData = file_get_contents('sound.wav');
// Rohdaten (16-Bit, Stereo, 44100 Hz) in Puffer laden
openal_buffer_data($buffer, AL_FORMAT_STEREO16, $wavData, 44100);

// Quelle erzeugen und Puffer binden
$source = openal_source_create();
openal_source_set($source, AL_BUFFER, $buffer);

// Wiedergabe starten
if (openal_source_play($source)) {
    echo 'Wiedergabe gestartet.' . PHP_EOL;
} else {
    echo 'Fehler beim Starten der Wiedergabe.' . PHP_EOL;
}

// Kurz warten, damit der Ton abgespielt werden kann
sleep(3);

// Aufräumen
openal_source_stop($source);
openal_source_destroy($source);
openal_buffer_destroy($buffer);
openal_context_destroy($context);
openal_device_close($device);
Wiedergabe gestartet.

Status der Quelle nach dem Start prüfen

<?php
// Voraussetzung: $source ist eine gültige, mit Puffer versehene OpenAL-Quelle

// Wiedergabe starten
openal_source_play($source);

// Status abfragen
$state = openal_source_get($source, AL_SOURCE_STATE);
if ($state === AL_PLAYING) {
    echo 'Quelle spielt gerade ab.' . PHP_EOL;
} elseif ($state === AL_STOPPED) {
    echo 'Quelle ist gestoppt.' . PHP_EOL;
} else {
    echo 'Unbekannter Status: ' . $state . PHP_EOL;
}
Quelle spielt gerade ab.

// Wichtig · Fallstricke

Experimentelle Erweiterung: Die OpenAL-Erweiterung für PHP ist als experimentell markiert. API und Verhalten können sich ohne Vorankündigung ändern. Sie muss separat kompiliert bzw. aktiviert werden und ist in den meisten Standard-PHP-Paketen nicht enthalten.

Plattformverfügbarkeit: OpenAL steht primär unter Linux (OpenAL Soft), macOS und Windows zur Verfügung. PHP-seitiger Support hängt von der installierten Bibliothek und der PECL-Erweiterung openal ab.

Nicht-blockierend: Die Funktion kehrt sofort zurück. Soll auf das Ende der Wiedergabe gewartet werden, muss der Status in einer Schleife mit openal_source_get() und AL_SOURCE_STATE abgefragt werden.