SDK PHP de l'API Video de Vonage

Le SDK PHP de Vonage Video fournit des méthodes pour :

Installation

Exigences

Vous devez créer une Application Vonage avec des capacités vidéo. Vous utiliserez ensuite la clé privée et l'ID de l'application pour configurer le client API. Vous pouvez créer l'application en vous connectant à votre compte Compte Video API de Vonage.

Le SDK PHP de Vonage Video nécessite PHP 8.0 ou une version plus récente.

Compositeur (recommandé)

Composer aide à gérer les dépendances pour les projets PHP. Plus d'informations ici : http://getcomposer.org

Ajouter ce paquet (vonage/video) à votre composer.json ou exécutez la commande suivante sur la ligne de commande ligne de commande :

$ ./composer.phar require vonage/video

Ce paquet nécessite le logiciel vonage/client-core pour fonctionner. Assurez-vous qu'il est également installé :

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

Utilisation

Initialisation

Ce paquet suit le PSR-4 norme de chargement automatique. Si vous êtes composer requiert l'autoloader généré :

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

Une fois les fichiers du SDK chargés, vous pouvez créer un client Vonage API à l'aide de la clé privée et de l'ID d'application associés à votre application Vonage Video. ID d'application associés à votre application Vonage Video. Vous pouvez ensuite accéder au SDK vidéo lui-même en en appelant $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();

Options d'initialisation

Le client Vonage Video permet de remplacer certaines valeurs en cas de besoins particuliers, tels que besoin de pointer vers un centre de données différent ou de modifier le délai d'attente du client HTTP sous-jacent. Pour ces ces situations, vous pouvez passer un tableau d'options supplémentaires en tant que troisième paramètre.

Nous autorisons les options supplémentaires suivantes pour le SDK vidéo :

  • base_video_url - Modifier le domaine vers lequel pointe le SDK. Utile pour sélectionner un centre de données spécifique ou de pointer vers une version fictive de l'API à des fins de test.
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();

Création de sessions

Pour créer une session, utilisez la fonction createSession($options) du client client Vonage Video. La méthode $options est un tableau facultatif utilisé pour spécifier les éléments suivants :

  • Définit si la session utilisera le routeur de médias ou tentera d'envoyer des flux directement entre les clients. directement entre les clients.

  • Définir si la session créera automatiquement des archives (implique l'utilisation d'une session routée)

  • Spécification d'un indice de localisation.

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();

Les getSessionId() renvoie l'identifiant de la session, que vous utilisez pour identifier la session dans les bibliothèques du client Vonage Video.

Pour plus d'informations sur les sessions, voir la page sessions guide du développeur.

Générer des jetons

Une fois qu'une session est créée, vous pouvez commencer à générer des jetons que les clients utiliseront pour se connecter à la session. Vous pouvez générer un jeton soit en appelant la fonction generateClientToken($sessionId, $options) sur le client vidéo.

Les $options est un tableau optionnel utilisé pour définir le rôle, la durée d'expiration du jeton et les données de connexion du jeton. Pour le contrôle de la mise en page dans les archives et les diffusions, la liste initiale des classes de présentation des flux publiés à partir de connexions utilisant ce jeton peut également être définie.

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']
));

Pour plus d'informations sur les jetons, voir la page Créer un jeton guide du développeur.

Travailler avec des flux

Vous pouvez obtenir des informations sur un flux en appelant la fonction getStream($sessionId, $streamId) du client client Vonage Video.

// 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

Vous pouvez obtenir des informations sur tous les flux d'une session en appelant la fonction listStreams($sessionId) du client client Vonage Video.

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

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

Travailler avec les archives

Vous ne pouvez archiver que les sessions qui utilisent le routeur média vidéo de Vonage (sessions dont le mode média est réglé sur routé).

Vous pouvez démarrer l'enregistrement d'une session vidéo Vonage à l'aide du bouton startArchive($archiveConfig) méthode du client Vonage Video. Cette méthode renvoie un Vonage\Video\Archive instance.

Le paramètre $archiveConfig est un objet de configuration et est utilisé pour déterminer l'identifiant de la session, attribuer un nom, enregistrer ou non l'audio et/ou la vidéo, le mode de sortie souhaité pour l'archive et la résolution souhaitée, le cas échéant. vidéo, le mode de sortie souhaité pour l'archive et la résolution souhaitée, le cas échéant. Notez que vous ne pouvez démarrer une Archive sur une session à laquelle des clients sont connectés.

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();

Si vous réglez le outputMode à l'option ArchiveConfig::OUTPUT_MODE_INDIVIDUALEn revanche, si vous choisissez une résolution plus élevée, chaque flux de l'archive sera enregistré dans son propre fichier. Veuillez noter que vous ne pouvez pas spécifier la résolution lorsque vous définissez l'option outputMode à l'option ArchiveConfig::OUTPUT_MODE_INDIVIDUAL. Les ArchiveConfig::OUTPUT_MODE_COMPOSED (par défaut), tous les flux de l'archive sont enregistrés dans un seul fichier (composé).

Notez que vous pouvez également créer une session automatiquement archivée, en passant le paramètre ArchiveMode::ALWAYS en tant que archiveMode de la options passé dans le paramètre $client->video()->createSession() (voir "Création de sessions" ci-dessus).

Vous pouvez arrêter l'enregistrement d'une archive commencée à l'aide de la touche stopArchive($archiveId) du client client Vonage Video.

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

Pour obtenir un Vonage\Video\Archive (et toutes les informations la concernant) à partir d'un ID d'archive, utilisez la commande getArchive($archiveId) du client Vonage Video.

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

Pour supprimer une archive, vous pouvez appeler le deleteArchive($archiveId) du client Vonage Video.

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

Vous pouvez également obtenir une liste de toutes les archives que vous avez créées (jusqu'à 1000) avec votre clé API. Cette opération s'effectue à l'aide de la à l'aide de la fonction listArchives($filter) du client vidéo de Vonage.

Vous pouvez passer un KeyValueFilter avec l'objet offset, countou sessionId options. Le filtre est facultatif et peut vous aider à sous-évaluer les résultats. Notez que la liste renvoie automatiquement la page suivante de résultats, vous n'avez donc pas besoin d'appeler manuellement la fonction offset ou count sauf en cas de besoin spécifique.

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();

Pour les archives composées, vous pouvez modifier la mise en page de manière dynamique, en utilisant la fonction updateArchiveLayout($archiveId, $layoutType) méthode :

$layout = Layout::getPIP(); // Or use another get method of the Layout class.
$client->video()->setArchiveLayout($archiveId, $layout);

Vous pouvez définir la classe de mise en page initiale pour les flux d'un client en définissant la propriété layout lorsque lorsque vous créez le jeton pour le client, à l'aide de l'option generateClientToken().

La définition de la mise en page des archives composées est facultative. Par défaut, les archives composées utilisent la mise en page "best fit" (voir Personnalisation de la mise en page vidéo pour les composées).

Pour plus d'informations sur l'archivage, voir la page Vonage Archivage vidéo guide du développeur.

Forcer un client à se déconnecter

Votre serveur d'application peut déconnecter un client d'une session vidéo Vonage en appelant la fonction disconnectClient($sessionId, $connectionId) du client Vonage Video.

// Force disconnect a client connection
$client->video()->disconnectClient($sessionId, $connectionId);

Forcer les clients d'une session à couper le son publié

Vous pouvez forcer l'éditeur d'un flux spécifique à cesser de publier de l'audio à l'aide de la commande forceMuteStream($sessionId, $stream) méthode.

Vous pouvez forcer l'éditeur de tous les flux d'une session (à l'exception d'une liste optionnelle de flux) à cesser de publier de l'audio à l'aide de la commande forceMuteAll($sessionId, $excludedStreamIds) et de la méthode de la sourdine. Vous pouvez ensuite désactiver la mise en sourdine de la session en appelant la méthode disableForceMute(sessionId) méthode.

Envoi de signaux

Une fois qu'une session est créée, vous pouvez envoyer des signaux à tous les participants à la session ou à une connexion spécifique. Vous pouvez envoyer un signal en appelant la fonction signal($sessionId, $type, $data, $connectionId) du client client Vonage Video.

Les $sessionId est l'identifiant de la session.

Les $data (chaîne) est une chaîne de données pour le signal. Vous pouvez envoyer un maximum de 8 ko.

Les $type (chaîne) est la chaîne de type du signal. Vous pouvez envoyer un maximum de 128 caractères, et seuls les caractères suivants sont autorisés : A-Z, a-z, Numbers (0-9), '-', '_' et '~'.

Les $connectionId est une chaîne de caractères facultative utilisée pour spécifier l'identifiant de connexion d'un client connecté à la session. d'un client connecté à la session. Si vous spécifiez cette valeur, le signal est envoyé au client spécifié. au client spécifié. Sinon, le signal est envoyé à tous les clients connectés à la session.

// 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);

Pour plus d'informations, voir le Développeur de signalisation vidéo Vonage guide.

Notes de mise à jour

Voir le Communiqués pour plus de détails.