Signatur
Beschreibung
openal_context_create() erzeugt einen neuen Audioverarbeitungskontext, der einem zuvor mit openal_device_open() geöffneten Gerät zugeordnet ist. Ein Kontext ist notwendig, um Audio-Quellen, Buffer und Listener zu verwalten sowie Sounds abzuspielen.
OpenAL arbeitet mit einem gerätebasierten Modell: Zunächst wird ein Ausgabegerät geöffnet, anschließend wird ein Kontext auf diesem Gerät erstellt und aktiviert. Erst nach dem Aktivieren des Kontexts mit openal_context_current() können Audioobjekte erzeugt und verwendet werden.
Typischerweise wird für einfache Anwendungen genau ein Kontext pro Gerät benötigt. Mehrere Kontexte auf einem Gerät sind möglich, aber nur einer kann gleichzeitig aktiv sein. Nach der Verwendung sollte der Kontext mit openal_context_destroy() freigegeben werden, um Ressourcen zu vermeiden.
Hinweis: Die OpenAL-Erweiterung für PHP ist nicht standardmäßig enthalten und muss separat installiert werden (PECL-Paket openal).
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $device Pflicht | resource | Eine gültige OpenAL-Geräte-Ressource, wie sie von openal_device_open() zurückgegeben wird. |
Rückgabewert
false im Fehlerfall (z. B. wenn das Gerät ungültig ist oder kein Kontext erstellt werden konnte).Beispiele
Grundlegende Initialisierung: Gerät öffnen, Kontext erstellen und aktivieren
<?php
// Standardmäßiges Audio-Ausgabegerät öffnen
$device = openal_device_open();
if ($device === false) {
die('Konnte kein OpenAL-Gerät öffnen.');
}
// Audioverarbeitungskontext erstellen
$context = openal_context_create($device);
if ($context === false) {
die('Konnte keinen OpenAL-Kontext erstellen.');
}
// Kontext aktivieren (als aktuellen setzen)
if (!openal_context_current($context)) {
die('Konnte den Kontext nicht aktivieren.');
}
echo 'OpenAL-Kontext erfolgreich erstellt und aktiviert.' . PHP_EOL;
// ... hier Audio-Operationen durchführen ...
// Kontext zerstören und Gerät schließen
openal_context_destroy($context);
openal_device_close($device);
?>
Audio-Quelle erstellen und Buffer abspielen
<?php
$device = openal_device_open();
$context = openal_context_create($device);
openal_context_current($context);
// Audio-Buffer erzeugen und mit PCM-Daten füllen
$buffer = openal_buffer_create();
// Beispiel: Stille (leere PCM-Daten) laden
openal_buffer_loadwav($buffer, '/pfad/zur/audiodatei.wav');
// Audio-Quelle erzeugen und Buffer zuweisen
$source = openal_source_create();
openal_source_set($source, AL_BUFFER, $buffer);
// Quelle abspielen
openal_source_play($source);
echo 'Wiedergabe gestartet.' . PHP_EOL;
// Ressourcen freigeben
openal_source_destroy($source);
openal_buffer_destroy($buffer);
openal_context_destroy($context);
openal_device_close($device);
?>
// Wichtig · Fallstricke
Ressourcenverwaltung: Jeder erstellte Kontext muss am Ende explizit mit openal_context_destroy() freigegeben werden. Das Vergessen kann zu Speicherlecks führen, insbesondere in lang laufenden PHP-Prozessen (z. B. CLI-Skripte oder Daemons).
Verfügbarkeit: Die OpenAL-Erweiterung ist ein PECL-Paket und in vielen Standard-PHP-Installationen nicht enthalten. Sie muss über PECL oder die Paketverwaltung des Betriebssystems nachinstalliert werden. Auf modernen Systemen und aktuellen PHP-Versionen kann die Verfügbarkeit und Unterstützung variieren.
Nur ein aktiver Kontext: Es kann immer nur ein Kontext gleichzeitig aktiv sein. Das Aktivieren eines neuen Kontexts deaktiviert den vorherigen automatisch.