Vonage Video API PHP SDK
- SDK-Übersicht
- API-Referenz
- Herunterladen
- Beispiele
- GitHub
Das OpenTok PHP-SDK bietet Methoden für:
- Erstellen Sitzungen und Token für OpenTok in PHP entwickelte Applications
- Arbeiten mit OpenTok-Archive
- Arbeiten mit Live-Streaming-Übertragungen mit OpenTok
- Arbeiten mit OpenTok SIP-Anbindung
- Senden von Signalen an Clients, die mit einer Sitzung verbunden sind
- Trennen von Kunden von Sitzungen
- Erzwingen, dass Clients in einer Sitzung die Verbindung unterbrechen oder das veröffentlichte Audio stummschalten
- Arbeiten mit OpenTok Audio-Anschluss
Einrichtung
Komponist (empfohlen):
Composer hilft bei der Verwaltung von Abhängigkeiten für PHP-Projekte. Mehr Informationen finden Sie hier: http://getcomposer.org
Dieses Paket hinzufügen (opentok/opentok) zu Ihrem composer.json Datei, oder führen Sie folgendes in der
Befehlszeile aus:
Verwendung
Initialisierung
Dieses Paket folgt dem PSR-4 Autoloading-Standard. Wenn Sie die Installation über Composer vornehmen, müssen Sie lediglich den generierten Autoloader einbinden:
require "<projectpath>/vendor/autoload.php";
Sobald die Dateien des SDK geladen sind, initialisieren Sie ein OpenTok\OpenTok Objekt mit Ihrer eigenen API
Schlüssel und API-Geheimnis.
use OpenTok\OpenTok;
$opentok = new OpenTok($apiKey, $apiSecret);
Initialisierungsoptionen
Die OpenTok\OpenTok Objekte ermöglichen lediglich einige Überschreibungen von Werten, wenn besondere Anforderungen bestehen, beispielsweise
wenn auf ein anderes Rechenzentrum verwiesen werden muss oder die Zeitüberschreitung des zugrunde liegenden HTTP-Clients geändert werden muss. Für
diese Fälle können Sie ein Array mit zusätzlichen Optionen als dritten Parameter übergeben.
Wir bieten folgende Optionen an:
apiUrl- Ändern Sie die Domäne, auf die das SDK verweist. Nützlich, wenn Sie ein bestimmtes Rechenzentrum auswählen müssen oder auf eine Scheinversion der API zum Testen verweisen mussclient- Benutzerdefinierter API-Client, der von … abgeleitet istOpenTok\Utils\Client, nützlich für die Anpassung eines HTTP-Clientstimeout- Ändern Sie das Standard-HTTP-Timeout, das standardmäßig auf „unbegrenzt“ eingestellt ist. Sie können eine Anzahl von Sekunden angeben, um das Timeout anzupassen.
use OpenTok\OpenTok;
use MyCompany\CustomOpenTokClient;
$options = [
'apiUrl' => 'https://custom.domain.com/',
'client' => new CustomOpenTokClient(),
'timeout' => 10,
]
$opentok = new OpenTok($apiKey, $apiSecret, $options);
Sitzungen erstellen
Um eine OpenTok-Sitzung zu erstellen, verwenden Sie die createSession($options) Methode der
OpenTok\OpenTok Klasse. Die Website $options ist ein optionales Array, mit dem Folgendes angegeben werden kann:
-
Festlegen, ob die Sitzung den OpenTok Media Router verwendet oder versucht, Streams direkt zwischen den Clients zu übertragen.
-
Einstellung, ob die Sitzung automatisch Archive erstellen soll (impliziert die Verwendung einer gerouteten Sitzung)
-
Angabe eines Ortshinweises.
Die getSessionId() Methode der OpenTok\Session Die Instanz gibt die Sitzungs-ID zurück,
mit der Sie die Sitzung in den OpenTok-Client-Bibliotheken identifizieren können.
use OpenTok\MediaMode;
use OpenTok\ArchiveMode;
// Create a session that attempts to use peer-to-peer streaming:
$session = $opentok->createSession();
// A session that uses the OpenTok Media Router, which is required for archiving:
$session = $opentok->createSession(array( 'mediaMode' => MediaMode::ROUTED ));
// A session with a location hint:
$session = $opentok->createSession(array( 'location' => '12.34.56.78' ));
// An automatically archived session:
$sessionOptions = array(
'archiveMode' => ArchiveMode::ALWAYS,
'mediaMode' => MediaMode::ROUTED
);
$session = $opentok->createSession($sessionOptions);
// Store this sessionId in the database for later use
$sessionId = $session->getSessionId();
Token generieren
Sobald eine Sitzung erstellt ist, können Sie mit der Generierung von Token beginnen, die die Clients bei der Verbindung mit der Sitzung verwenden können.
Sie können ein Token entweder durch Aufruf der Funktion generateToken($sessionId, $options) Methode der
OpenTok\OpenTok Klasse oder durch Aufruf der generateToken($options) Methode auf der OpenTok\Session
Instanz nach deren Erstellung. Die $options „parameter“ ist ein optionales Array, mit dem die Rolle,
die Gültigkeitsdauer und die Verbindungsdaten des Tokens festgelegt werden. Zur Steuerung des Layouts in Archiven und Übertragungen
kann zudem die anfängliche Liste der Layoutklassen für Streams festgelegt werden, die über Verbindungen mit diesem Token veröffentlicht werden.
use OpenTok\Session;
use OpenTok\Role;
// Generate a Token from just a sessionId (fetched from a database)
$token = $opentok->generateToken($sessionId);
// Generate a Token by calling the method on the Session (returned from createSession)
$token = $session->generateToken();
// Set some options in a token
$token = $session->generateToken(array(
'role' => Role::MODERATOR,
'expireTime' => time()+(7 * 24 * 60 * 60), // in one week
'data' => 'name=Johnny',
'initialLayoutClassList' => array('focus')
));
Arbeiten mit Strömen
Sie können Informationen über einen Stream erhalten, indem Sie die getStream($sessionId, $streamId) Methode der
OpenTok\OpenTok Klasse.
use OpenTok\Session;
// Get stream info from just a sessionId (fetched from a database)
$stream = $opentok->getStream($sessionId, $streamId);
// Stream properties
$stream->id; // string with the stream ID
$stream->videoType; // string with the video type
$stream->name; // string with the name
$stream->layoutClassList; // array with the layout class list
Sie können Informationen über alle Streams in einer Sitzung erhalten, indem Sie die listStreams($sessionId) Methode der
OpenTok\OpenTok Klasse.
use OpenTok\Session;
// Get list of streams from just a sessionId (fetched from a database)
$streamList = $opentok->listStreams($sessionId);
$streamList->totalCount(); // total count
Arbeiten mit Archiven
Sie können nur Sitzungen archivieren, die den OpenTok Media Router verwenden (Sitzungen, bei denen der Medienmodus auf „routed“ eingestellt ist).
Sie können die Aufzeichnung einer OpenTok-Sitzung über die startArchive($sessionId, $name) Methode
der OpenTok\OpenTok Klasse. Dies gibt eine OpenTok\Archive Beispiel. Der Parameter
$archiveOptions ist ein optionales Array und dient dazu, einen Namen festzulegen, zu bestimmen, ob Audio und/oder
Video aufgezeichnet werden soll, den gewünschten Ausgabemodus für das Archiv sowie gegebenenfalls die gewünschte Auflösung. Beachten Sie, dass Sie ein
Archiv nur in einer Sitzung starten können, mit der Clients verbunden sind.
// Create a simple archive of a session
$archive = $opentok->startArchive($sessionId);
// Create an archive using custom options
$archiveOptions = array(
'name' => 'Important Presentation', // default: null
'hasAudio' => true, // default: true
'hasVideo' => true, // default: true
'outputMode' => OutputMode::COMPOSED, // default: OutputMode::COMPOSED
'resolution' => '1280x720' // default: '640x480'
);
$archive = $opentok->startArchive($sessionId, $archiveOptions);
// Store this archiveId in the database for later use
$archiveId = $archive->id;
Wenn Sie die Einstellung outputMode Option zu OutputMode::INDIVIDUALwird jeder Stream des Archivs in einer eigenen Datei aufgezeichnet. Bitte beachten Sie, dass Sie die Auflösung nicht angeben können, wenn Sie die Option outputMode Option zu OutputMode::INDIVIDUAL. Die OutputMode::COMPOSED (die Standardeinstellung) bewirkt, dass alle Streams im Archiv in einer einzigen (zusammengesetzten) Datei aufgezeichnet werden.
Beachten Sie, dass Sie auch eine automatisch archivierte Sitzung erstellen können, indem Sie in ArchiveMode::ALWAYS
als die archiveMode Taste des options Parameter, der an die OpenTok->createSession()
Methode (siehe "Erstellen von Sitzungen", oben).
Sie können die Aufzeichnung eines gestarteten Archivs mit der Taste stopArchive($archiveId) Methode der
OpenTok\OpenTok Objekt. Sie können dies auch mithilfe der stop() Methode der
OpenTok\Archive Instanz.
// Stop an Archive from an archiveId (fetched from database)
$opentok->stopArchive($archiveId);
// Stop an Archive from an Archive instance (returned from startArchive)
$archive->stop();
Um eine OpenTok\Archive Instanz (und alle zugehörigen Informationen) aus einer Archiv-ID zu erhalten, verwenden Sie die
getArchive($archiveId) Methode der OpenTok\OpenTok Klasse.
$archive = $opentok->getArchive($archiveId);
Um ein Archiv zu löschen, können Sie die Funktion deleteArchive($archiveId) Methode der OpenTok\OpenTok
Klasse oder die delete() Methode eines OpenTok\Archive Instanz.
// Delete an Archive from an archiveId (fetched from database)
$opentok->deleteArchive($archiveId);
// Delete an Archive from an Archive instance (returned from startArchive, getArchive)
$archive->delete();
Sie können auch eine Liste aller Archive abrufen, die Sie mit Ihrem API-Schlüssel erstellt haben (bis zu 1000). Dies geschieht
mit der Funktion listArchives($offset, $count, $sessionId) Methode der OpenTok/OpenTok Klasse. Die Parameter
$offset, $countund $sessionId sind optional und können Ihnen dabei helfen, die Ergebnisse zu paginieren und die
Daten nach einer bestimmten Sitzung zu filtern. Dadurch wird eine Instanz der OpenTok\ArchiveList Klasse.
$archiveList = $opentok->listArchives();
// Get an array of OpenTok\Archive instances
$archives = $archiveList->getItems();
// Get the total number of Archives for this API Key
$totalCount = $archiveList->totalCount();
Bei zusammengesetzten Archiven können Sie das Layout dynamisch ändern, indem Sie die setArchiveLayout($archiveId, $layoutType) Methode:
use OpenTok\OpenTok;
$layout = Layout::getPIP(); // Or use another get method of the Layout class.
$opentok->setArchiveLayout($archiveId, $layout);
Sie können die anfängliche Layoutklasse für die Streams eines Clients festlegen, indem Sie die layout Option, wenn
Sie das Token für den Client erstellen, indem Sie die OpenTok->generateToken() Methode oder die
Session->generateToken() Methode. Und Sie können die Layout-Klassen für einen Stream ändern,
indem Sie die OpenTok->updateStream() Methode.
Die Festlegung des Layouts von zusammengestellten Archiven ist optional. Standardmäßig verwenden zusammengestellte Archive das "best fit" Layout (siehe Anpassen des Videolayouts für zusammengesetzte Archive).
Weitere Informationen zur Archivierung finden Sie unter OpenTok-Archivierung Leitfaden für Entwickler.
Arbeiten mit Broadcasts
Live-Streaming-Übertragungen können nur für Sitzungen gestartet werden, die den OpenTok Media Router verwenden (Sitzungen, bei denen der Medienmodus auf „routed“ eingestellt ist).
Starten Sie die Live-Streaming-Übertragung einer OpenTok-Sitzung mithilfe der
startBroadcast($sessionId, $options) Methode der OpenTok\OpenTok Klasse.
Dies gibt ein OpenTok\Broadcast Beispiel. Das $options Der Parameter ist
ein Array, mit dem die Broadcast-Streams definiert und Broadcast-Optionen wie Layout,
maxDuration, Auflösung und weitere festgelegt werden.
// Define options for the broadcast
$options = [
'layout' => Layout::getBestFit(),
'maxDuration' => 5400,
'resolution' => '1280x720',
'output' => [
'hls' => [
'dvr' => true,
'lowLatency' => false
],
'rtmp' => [
[
'id' => 'foo',
'serverUrl' => 'rtmps://myfooserver/myfooapp',
'streamName' => 'myfoostream'
],
[
'id' => 'bar',
'serverUrl' => 'rtmps://myfooserver/mybarapp',
'streamName' => 'mybarstream'
],
]
]
];
// Start a live streaming broadcast of a session
$broadcast = $opentok->startBroadcast($sessionId, $options);
// Store the broadcast ID in the database for later use
$broadcastId = $broadcast->id;
Sie können die Live-Übertragung über die stopBroadcast($broadcastId) Methode der
OpenTok\OpenTok Objekt. Sie können dies auch mithilfe der stop() Methode der
OpenTok\Broadcast Instanz.
// Stop a broadcast from an broadcast ID (fetched from database)
$opentok->stopBroadcast($broadcastId);
// Stop a broadcast from an Broadcast instance (returned from startBroadcast)
$broadcast->stop();
Um eine OpenTok\Broadcast Instanz (und alle Informationen dazu) anhand einer Broadcast-ID abzurufen,
verwenden Sie die getBroadcast($broadcastId) Methode der OpenTok\OpenTok Klasse.
$broadcast = $opentok->getBroadcast($broadcastId);
Sie können das Layout dynamisch anpassen, indem Sie die
OpenTok->updateBroadcastLayout($broadcastId, $layout) Methode:
use OpenTok\OpenTok;
$layout = Layout::getPIP(); // Or use another get method of the Layout class.
$opentok->updateBroadcastLayout($broadcastId, $layout);
Sie können die Layout Klasse zum Festlegen der Layout-Typen:
Layout::getHorizontalPresentation(), Layout::getVerticalPresentation(), Layout::getPIP(),
Layout::getBestFit(), Layout::createCustom().
$layoutType = Layout::getHorizontalPresentation();
$opentok->setArchiveLayout($archiveId, $layoutType);
// For custom Layouts, you can do the following
$options = array(
'stylesheet' => 'stream.instructor {position: absolute; width: 100%; height:50%;}'
);
$layoutType = Layout::createCustom($options);
$opentok->setArchiveLayout($archiveId, $layoutType);
Sie können das Layout für die Bildschirmfreigabe auch festlegen, indem Sie die Funktion setScreenshareType() Methode auf einem Layout-Objekt.
$layout = Layout::getBestFit(); // Other types are not currently supported
$layout->setScreenshareType(Layout::LAYOUT_VERTICAL);
Sie können die anfängliche Layoutklasse für die Streams eines Clients festlegen, indem Sie die layout Option, wenn
Sie das Token für den Client erstellen, indem Sie die OpenTok->generateToken() Methode oder die
Session->generateToken() Methode. Und Sie können die Layout-Klassen für einen Stream ändern,
indem Sie die OpenTok->updateStream() Methode.
Die Festlegung des Layouts für Live-Streaming-Übertragungen ist optional. Standardmäßig wird für Übertragungen das „Best-Fit“-Layout verwendet (siehe Konfiguration des Video-Layouts für OpenTok-Live-Streaming- Übertragungen).
Weitere Informationen zu Live-Streaming-Übertragungen finden Sie unter Live-Streaming-Übertragungen mit OpenTok Leitfaden für Entwickler.
Erzwingen der Verbindungstrennung eines Clients
Ihr Anwendungsserver kann einen Client von einer OpenTok-Sitzung trennen, indem er die forceDisconnect($sessionId, $connectionId)
Methode der OpenTok\OpenTok Klasse.
use OpenTok\OpenTok;
// Force disconnect a client connection
$opentok->forceDisconnect($sessionId, $connectionId);
Erzwingen, dass Clients in einer Sitzung die veröffentlichten Audiodaten stummschalten
Sie können den Herausgeber eines bestimmten Streams zwingen, die Veröffentlichung von Audio zu beenden, indem Sie die
Opentok.forceMuteStream($sessionId, $stream) Methode.
Sie können den Herausgeber aller Streams in einer Sitzung (mit Ausnahme einer optionalen Liste von Streams) zwingen
die Veröffentlichung von Audio zu beenden, indem Sie die Opentok.forceMuteAll($sessionId, $excludedStreamIds) Methode.
Sie können dann den Stummschaltungsstatus der Sitzung deaktivieren, indem Sie die Methode
Opentok.DisableForceMute(sessionId) oder Opentok.DisableForceMuteAsync(sessionId)
Methode.
Senden von Signalen
Sobald eine Sitzung erstellt ist, können Sie Signale an alle Teilnehmer der Sitzung oder an eine bestimmte Verbindung senden.
Sie können ein Signal senden, indem Sie die Funktion signal($sessionId, $payload, $connectionId) Methode der
OpenTok\OpenTok Klasse.
Die $sessionId ist die Sitzungs-ID der Sitzung.
Die $payload Der Parameter ist ein assoziatives Array, mit dem Folgendes festgelegt wird:
Folgendes:
-
data(Zeichenkette) – Die Datenzeichenkette für das Signal. Es können maximal 8 kB gesendet werden. -
type(Zeichenkette) -- — (Optional) Die Typzeichenkette für das Signal. Es können maximal 128 Zeichen gesendet werden, wobei nur die folgenden Zeichen zulässig sind: A–Z, a–z, Numbers (0–9), „-“, „_“ und „~“.
Die $connectionId ist eine optionale Zeichenkette, die zur Angabe der Verbindungs-ID des
eines mit der Sitzung verbundenen Clients anzugeben. Wenn Sie diesen Wert angeben, wird das Signal an den
den angegebenen Client gesendet. Andernfalls wird das Signal an alle mit der Sitzung verbundenen Clients gesendet.
use OpenTok\OpenTok;
// Send a signal to a specific client
$signalPayload = array(
'data' => 'some signal message',
'type' => 'signal type'
);
$connectionId = 'da9cb410-e29b-4c2d-ab9e-fe65bf83fcaf';
$opentok->signal($sessionId, $signalPayload, $connectionId);
// Send a signal to everyone in the session
$signalPayload = array(
'data' => 'some signal message',
'type' => 'signal type'
);
$opentok->signal($sessionId, $signalPayload);
Weitere Informationen finden Sie in der OpenTok-Signalisierungs-Entwicklerhandbuch Leitfaden.
Arbeiten mit SIP Interconnect
Mithilfe der SIP-Interconnect-Funktion können Sie einen reinen Audio-Stream von einem externen SIP-Gateway eines Drittanbieters hinzufügen. Dazu benötigen Sie eine SIP-URI, die Sitzungs-ID, zu der Sie den reinen Audio-Stream hinzufügen möchten, sowie ein Token, um eine Verbindung zu dieser Sitzungs-ID herzustellen.
Um einen SIP-Anruf zu starten, rufen Sie die Nummer dial($sessionId, $token, $sipUri, $options) Methode der
OpenTok\OpenTok Klasse:
$sipUri = 'sip:user@sip.partner.com;transport=tls';
$options = array(
'headers' => array(
'X-CUSTOM-HEADER' => 'headerValue'
),
'auth' => array(
'username' => 'username',
'password' => 'password'
),
'secure' => true,
'from' => 'from@example.com'
);
$opentok->dial($sessionId, $token, $sipUri, $options);
Weitere Informationen finden Sie in der OpenTok SIP Interconnect – Entwicklerhandbuch.
Arbeiten mit Audio Connector
Sie können ein Audio-Anschluss WebSocket
durch Aufruf der connectAudio() Methode der
OpenTok\OpenTok Klasse.
Anforderungen
Sie benötigen einen OpenTok-API-Schlüssel und ein API-Geheimnis, die Sie erhalten, indem Sie sich bei Ihrem Vonage Video API-Konto.
Für das OpenTok PHP SDK ist PHP 7.2 oder höher erforderlich.
Anmerkungen zur Veröffentlichung
Siehe die Veröffentlichungen Seite für Details.
Wichtige Änderungen seit Version 2.2.0
Änderungen in Version 2.2.1:
Die Standardeinstellung für die createSession() Die Vorgehensweise besteht darin, eine Sitzung zu erstellen, bei der der Medienmodus
auf „relayed“ eingestellt ist. In früheren Versionen des SDK war die Standardeinstellung die Verwendung des OpenTok Media Routers
(Medienmodus auf „routed“ eingestellt). In einer „relayed“-Sitzung versuchen die Clients, Streams direkt
untereinander zu übertragen (Peer-to-Peer); können die Clients aufgrund von Firewall-Einschränkungen keine Verbindung herstellen, nutzt die
Sitzung den OpenTok-TURN-Server zur Weiterleitung der Audio- und Videostreams.
Änderungen in Version 2.2.0:
Diese Version des SDK bietet Unterstützung für die Arbeit mit OpenTok-Archiven.
Die Namen vieler Methoden der API haben sich geändert. Viele Methodennamen wurden auf CamelCase umgestellt, darunter die folgenden:
\OpenTok\OpenTok->createSession()\OpenTok\OpenTok->generateToken()
Beachten Sie außerdem, dass die options Parameter des OpenTok->createSession() Die Methode hat eine mediaMode
Eigenschaft anstelle einer p2p Eigentum.
Die Klasse „API_Config“ wurde entfernt. Speichern Sie Ihren OpenTok-API-Schlüssel und Ihr API-Geheimnis im Code außerhalb der SDK-Dateien.