Vonage Video API PHP SDK

Das Vonage Video PHP SDK bietet Methoden für:

Einrichtung

Anforderungen

Sie müssen eine Vonage Application mit Videofunktion erstellen. Sie verwenden dann den privaten Schlüssel und die Anwendungs-ID um den API-Client zu konfigurieren. Sie können die Anwendung erstellen, indem Sie sich bei Ihrem Vonage Video API-Konto.

Das Vonage Video PHP SDK erfordert PHP 8.0 oder höher.

Composer (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 (vonage/video) zu Ihrem composer.json Datei, oder führen Sie folgendes in der Befehlszeile aus:

$ ./composer.phar require vonage/video

Dieses Paket erfordert das vonage/client-core Paket zu funktionieren. Stellen Sie sicher, dass es ebenfalls installiert ist:

$ ./composer.phar require vonage/client-core

Verwendung

Initialisierung

Dieses Paket folgt dem PSR-4 Autoloading-Standard. Wenn Sie composer benötigt den generierten Autoloader:

require "<projectpath>/vendor/autoload.php";

Sobald die Dateien des SDK geladen sind, können Sie einen Vonage API-Client erstellen, indem Sie den privaten Schlüssel und die Anwendungs-ID erstellen, die mit Ihrer Vonage Video-Anwendung verknüpft sind. Sie können dann auf das Video-SDK selbst zugreifen, indem Sie aufrufen. $client->video().

use Vonage\Client;
use Vonage\Client\Credentials\Keypair;

$credentials = new Keypair('private-key-string', 'application-id');
$client = new Client($credentials);
$vonageVideoClient = $client->video();

Initialisierungsoptionen

Der Vonage Video-Client ermöglicht das Überschreiben einiger Werte, wenn besondere Anforderungen auftreten, wie z. B. auf ein anderes Rechenzentrum verweisen oder die Zeitüberschreitung des zugrunde liegenden HTTP-Clients ändern müssen. Für diese Situationen können Sie ein Array mit zusätzlichen Optionen als dritten Parameter übergeben.

Wir erlauben die folgenden zusätzlichen Optionen für das Video SDK:

  • base_video_url - Ä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 muss
use Vonage\Client;
use Vonage\Client\Credentials\Keypair;
use Vonage\Video\ClientFactory;

$credentials = new Keypair('private-key-string', 'application-id');
$options = [
    'base_video_url' => 'https://country-specific.api.vonage.com'
];
$client = new Client($credentials);
$vonageVideoClient = $client->video();

Sitzungen erstellen

Um eine Sitzung zu erstellen, verwenden Sie die createSession($options) Methode des Vonage Video-Client. Die $options ist ein optionales Array, mit dem Folgendes angegeben werden kann:

  • Einstellung, ob die Sitzung den Medienrouter verwendet oder versucht, Streams direkt zwischen Clients zu senden.

  • Einstellung, ob die Sitzung automatisch Archive erstellen soll (impliziert die Verwendung einer gerouteten Sitzung)

  • Angabe eines Ortshinweises.

use Vonage\Video\MediaMode;
use Vonage\Video\SessionOptions;
use Vonage\Video\Archive\ArchiveMode;

// Create a session that attempts to use peer-to-peer streaming:
$session = $client->video()->createSession();

// A session that uses the Vonage Video Media Router, which is required for archiving:
$session = $client->video()->createSession(new SessionOptions(['mediaMode' => MediaMode::ROUTED]));

// A session with a location hint:
$session = $client->video()->createSession(new SessionOptions(['location' => '12.34.56.78']));

// An automatically archived session:
$sessionOptions = new SessionOptions([
    'archiveMode' => ArchiveMode::ALWAYS,
    'mediaMode' => MediaMode::ROUTED
]);
$session = $client->video()->createSession($sessionOptions);


// Store this sessionId in the database for later use
$sessionId = $session->getSessionId();

Die getSessionId() Methode gibt die Sitzungs-ID zurück, die Sie zur Identifizierung der Sitzung in den Vonage Video-Clientbibliotheken verwenden.

Weitere Informationen über Sitzungen finden Sie in der Sitzungen Leitfaden für Entwickler.

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 generateClientToken($sessionId, $options) Methode auf dem Video-Client.

Die $options ist ein optionales Array, mit dem die Rolle festgelegt werden kann, wie lange der Token noch gültig ist, und die Verbindungsdaten des Tokens. Für die Layoutkontrolle in Archiven und Broadcasts, kann auch die anfängliche Layout-Klassenliste der Streams festgelegt werden, die von Verbindungen mit diesem Token veröffentlicht werden.

use Vonage\Video\Role;

// Generate a Token from just a sessionId (fetched from a database)
$token = $client->video()->generateClientToken($sessionId);
// Set some options in a token
$token = $client->video()->generateClientToken(array(
    'role'                      => Role::MODERATOR,
    'ttl'                       => 7 * 24 * 60 * 60, // in one week
    'connection_data'           => 'name=Johnny',
    'initialLayoutClassList'    => ['focus']
));

Weitere Informationen zu Token finden Sie in der Token erstellen Leitfaden für Entwickler.

Arbeiten mit Strömen

Sie können Informationen über einen Stream erhalten, indem Sie die getStream($sessionId, $streamId) Methode des Vonage Video-Client.

// Get stream info from just a sessionId (fetched from a database)
$stream = $client->video()->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 des Vonage Video-Client.

// Get list of streams from just a sessionId (fetched from a database)
$streamList = $client->video()->listStreams($sessionId);

$streamList->count(); // total count

Arbeiten mit Archiven

Sie können nur Sitzungen archivieren, die den Vonage Video Media Router verwenden verwenden (Sitzungen, bei denen der Medienmodus auf geroutet eingestellt ist).

Sie können die Aufzeichnung einer Vonage-Videositzung mit der Taste startArchive($archiveConfig) Methode des Vonage Video-Clients. Dies gibt eine Vonage\Video\Archive Instanz.

Der Parameter $archiveConfig ist ein Konfigurationsobjekt und wird verwendet, um die Sitzungs-ID zu bestimmen, einen Namen zu vergeben, ob Audio und/oder Video aufgezeichnet werden soll, den gewünschten Video, den gewünschten Ausgabemodus für das Archiv und ggf. die gewünschte Auflösung. Beachten Sie, dass Sie ein Archiv nur dann starten können Archiv nur auf einer Sitzung starten können, mit der Clients verbunden sind.

use Vonage\Video\Archive\ArchiveConfig;

// Create a simple archive of a session
$archive = $client->video()->startArchive(new ArchiveConfig($sessionId));

// Create an archive using custom options
$archiveOptions = (new ArchiveConfig($sessionId))
    ->setName('Important Presentation')
    ->setHasAudio(true)
    ->setHasVideo(true)
    ->setOutputMode(ArchiveConfig::OUTPUT_MODE_COMPOSED)
    ->setResolution(ArchiveConfig::RESOLUTION_LANDSCAPE_HD)
;
$archive = $client->video()->startArchive($archiveOptions);

// Store this archiveId in the database for later use
$archiveId = $archive->getId();

Wenn Sie die Einstellung outputMode Option zu ArchiveConfig::OUTPUT_MODE_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 ArchiveConfig::OUTPUT_MODE_INDIVIDUAL. Die ArchiveConfig::OUTPUT_MODE_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 $client->video()->createSession() Methode (siehe "Erstellen von Sitzungen", oben).

Sie können die Aufzeichnung eines gestarteten Archivs mit der Taste stopArchive($archiveId) Methode des Vonage Video-Client.

// Stop an Archive from an archiveId (fetched from database)
$client->video()->stopArchive($archiveId);

Um eine Vonage\Video\Archive Instanz (und alle zugehörigen Informationen) aus einer Archiv-ID zu erhalten, verwenden Sie die getArchive($archiveId) Methode des Vonage Video-Clients.

$archive = $client->video()->getArchive($archiveId);

Um ein Archiv zu löschen, können Sie die Funktion deleteArchive($archiveId) Methode des Vonage Video-Clients.

// Delete an Archive from an archiveId (fetched from database)
$client->video()->deleteArchive($archiveId);

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($filter) Methode des Vonage Video Client.

Sie können eine KeyValueFilter Objekt mit offset, count, oder sessionId Optionen. Der Filter ist optional und kann Ihnen helfen, die Ergebnisse einzugrenzen. Beachten Sie, dass die Liste automatisch die nächste Seite der Ergebnisse zurückgibt, so dass Sie nicht manuell eine offset oder count es sei denn, sie werden ausdrücklich benötigt.

use Vonage\Entity\Filter\KeyValueFilter;

// Return all archives
$archiveList = $client->video()->listArchives();
// Filter to a specific page, offset, or session ID
$archiveList = $client->video()->listArchives(new KeyValueFilter(['offset' => 10]));

// The list is iterable
foreach($archives as $archive) {
    echo $archive->getName() . PHP_EOL;
}
// Get the total number of Archives for this API Key
$totalCount = $archiveList->count();

Bei zusammengesetzten Archiven können Sie das Layout dynamisch ändern, indem Sie die updateArchiveLayout($archiveId, $layoutType) Methode:

$layout = Layout::getPIP(); // Or use another get method of the Layout class.
$client->video()->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 generateClientToken().

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 in der Vonage Video-Archivierung Leitfaden für Entwickler.

Erzwingen der Verbindungstrennung eines Clients

Ihr Anwendungsserver kann die Verbindung eines Clients zu einer Vonage Video-Sitzung trennen, indem er die Funktion disconnectClient($sessionId, $connectionId) Methode des Vonage Video-Clients.

// Force disconnect a client connection
$client->video()->disconnectClient($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 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 forceMuteAll($sessionId, $excludedStreamIds) Methode. Sie können dann den Stummschaltungsstatus der Sitzung deaktivieren, indem Sie die Methode disableForceMute(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, $type, $data, $connectionId) Methode des Vonage Video-Client.

Die $sessionId ist die Sitzungs-ID der Sitzung.

Die $data (string) ist ein Datenstring für das Signal. Sie können maximal 8kB senden.

Die $type (string) ist die Typzeichenkette für das Signal. Sie können maximal 128 Zeichen senden, 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.

// Send a signal to a specific client
$data = 'some signal message';
$type => 'signal type';
$connectionId = 'da9cb410-e29b-4c2d-ab9e-fe65bf83fcaf';
$client->video()->sendSignal($sessionId, $type, $data, $connectionId);

// Send a signal to everyone in the session
$data = 'some signal message';
$type => 'signal type';
$client->video()->signal($sessionId, $signalPayload);

Weitere Informationen finden Sie in der Vonage Video-Signalisierung Entwickler Leitfaden.

Anmerkungen zur Veröffentlichung

Siehe die Veröffentlichungen Seite für Details.