Signatur
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
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);
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;
}
// 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.