SDK PHP de l'API Video de Vonage
- Présentation du SDK
- Référence API
- Télécharger
- Exemples
- GitHub
Le SDK PHP d'OpenTok propose des méthodes permettant de :
- Génération sessions et jetons pour OpenTok Applications développées en PHP
- Travailler avec Archives OpenTok
- Travailler avec Diffusions en direct avec OpenTok
- Travailler avec Interconnexion SIP OpenTok
- Envoi de signaux aux clients connectés à une session
- Déconnexion des clients des sessions
- Forcer les clients d'une session à se déconnecter ou à mettre en sourdine l'audio publié
- Travailler avec OpenTok Connecteur audio
Installation
Compositeur (recommandé) :
Composer aide à gérer les dépendances pour les projets PHP. Plus d'informations ici : http://getcomposer.org
Ajouter ce paquet (opentok/opentok) à votre composer.json ou exécutez la commande suivante sur la ligne de commande
ligne de commande :
Utilisation
Initialisation
Ce paquet suit le PSR-4 Norme d'autochargement. Si vous utilisez Composer pour l'installation, il vous suffit d'inclure l'autochargeur généré :
require "<projectpath>/vendor/autoload.php";
Une fois les fichiers du SDK chargés, vous initialisez un OpenTok\OpenTok objet avec votre propre API
Clé et secret API.
use OpenTok\OpenTok;
$opentok = new OpenTok($apiKey, $apiSecret);
Options d'initialisation
Les OpenTok\OpenTok Ces objets permettent simplement de modifier certaines valeurs en cas de besoins particuliers, par exemple
lorsqu'il faut pointer vers un centre de données différent ou modifier le délai d'expiration du client HTTP sous-jacent. Dans
ces situations, vous pouvez passer un tableau d'options supplémentaires en tant que troisième paramètre.
Nous proposons les options suivantes :
apiUrl- 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.client- Client API personnalisé qui hérite deOpenTok\Utils\Client, utile pour personnaliser un client HTTPtimeout- Modifier le délai d'expiration HTTP par défaut, qui est défini par défaut sur « indéfiniment ». Vous pouvez indiquer un nombre de secondes pour modifier ce délai.
use OpenTok\OpenTok;
use MyCompany\CustomOpenTokClient;
$options = [
'apiUrl' => 'https://custom.domain.com/',
'client' => new CustomOpenTokClient(),
'timeout' => 10,
]
$opentok = new OpenTok($apiKey, $apiSecret, $options);
Création de sessions
Pour créer une session OpenTok, utilisez la commande createSession($options) de la méthode
OpenTok\OpenTok classe. Les $options est un tableau facultatif utilisé pour spécifier les éléments suivants :
-
Définit si la session utilisera le routeur multimédia OpenTok ou tentera d'envoyer les flux 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.
Les getSessionId() de la méthode OpenTok\Session Cette instance renvoie l'identifiant de session,
que vous utilisez pour identifier la session dans les bibliothèques client OpenTok.
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();
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 generateToken($sessionId, $options) de la méthode
OpenTok\OpenTok classe, ou en appelant la generateToken($options) sur la méthode OpenTok\Session
instance après sa création. Le $options Le paramètre est un tableau facultatif permettant de définir le rôle,
la durée de validité et les données de connexion du jeton. Pour le contrôle de la mise en page dans les archives et les diffusions,
il est également possible de définir la liste initiale des classes de mise en page des flux publiés à partir des connexions utilisant ce jeton.
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')
));
Travailler avec des flux
Vous pouvez obtenir des informations sur un flux en appelant la fonction getStream($sessionId, $streamId) de la méthode
OpenTok\OpenTok classe.
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
Vous pouvez obtenir des informations sur tous les flux d'une session en appelant la fonction listStreams($sessionId) de la méthode
OpenTok\OpenTok classe.
use OpenTok\Session;
// Get list of streams from just a sessionId (fetched from a database)
$streamList = $opentok->listStreams($sessionId);
$streamList->totalCount(); // total count
Travailler avec les archives
Vous ne pouvez archiver que les sessions qui utilisent OpenTok Media Router (les sessions dont le mode multimédia est défini sur « routed »).
Vous pouvez lancer l'enregistrement d'une session OpenTok à l'aide de la commande startArchive($sessionId, $name) méthode
de la OpenTok\OpenTok classe. Cela renverra un OpenTok\Archive par exemple. Le paramètre
$archiveOptions Il s'agit d'un tableau facultatif qui permet d'attribuer un nom, de définir s'il faut enregistrer du son et/ou
de la vidéo, de choisir le mode de sortie souhaité pour l'archive, ainsi que la résolution souhaitée le cas échéant. Notez que vous ne pouvez lancer une
archive que sur une session à laquelle des clients sont connectés.
// 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;
Si vous réglez le outputMode à l'option OutputMode::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 OutputMode::INDIVIDUAL. Les OutputMode::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 OpenTok->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) de la méthode
OpenTok\OpenTok objet. Vous pouvez également le faire à l'aide de la commande stop() de la méthode
OpenTok\Archive instance.
// Stop an Archive from an archiveId (fetched from database)
$opentok->stopArchive($archiveId);
// Stop an Archive from an Archive instance (returned from startArchive)
$archive->stop();
Pour obtenir un OpenTok\Archive (et toutes les informations la concernant) à partir d'un ID d'archive, utilisez la commande
getArchive($archiveId) de la méthode OpenTok\OpenTok classe.
$archive = $opentok->getArchive($archiveId);
Pour supprimer une archive, vous pouvez appeler le deleteArchive($archiveId) de la méthode OpenTok\OpenTok
classe ou le delete() méthode d'un OpenTok\Archive instance.
// 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();
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($offset, $count, $sessionId) de la méthode OpenTok/OpenTok classe. Les paramètres
$offset, $countet $sessionId sont facultatifs et peuvent vous aider à parcourir les résultats par pages et à filtrer les
données en fonction d'une session spécifique. Cela renverra une instance de la OpenTok\ArchiveList classe.
$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();
Pour les archives composées, vous pouvez modifier la mise en page de manière dynamique, en utilisant la fonction setArchiveLayout($archiveId, $layoutType) méthode :
use OpenTok\OpenTok;
$layout = Layout::getPIP(); // Or use another get method of the Layout class.
$opentok->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 OpenTok->generateToken() méthode ou la
Session->generateToken() méthode. Et vous pouvez modifier les classes de mise en page d'un flux
en appelant la méthode OpenTok->updateStream() méthode.
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, consultez le Archivage OpenTok guide du développeur.
Travailler avec des diffusions
Vous ne pouvez lancer des diffusions en direct que pour les sessions utilisant OpenTok Media Router (sessions dont le mode multimédia est défini sur « routed »).
Lancez la diffusion en direct d'une session OpenTok à l'aide de la
startBroadcast($sessionId, $options) de la méthode OpenTok\OpenTok classe.
Cela renverra un OpenTok\Broadcast par exemple. Le $options Le paramètre est
un tableau servant à définir les flux de diffusion et à attribuer des options de diffusion telles que la mise en page,
la durée maximale, la résolution, etc.
// 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;
Vous pouvez interrompre la diffusion en direct à l'aide de la stopBroadcast($broadcastId) de la méthode
OpenTok\OpenTok objet. Vous pouvez également le faire à l'aide de la commande stop() de la méthode
OpenTok\Broadcast instance.
// 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();
Pour obtenir un OpenTok\Broadcast instance (et toutes les informations la concernant) à partir d'un identifiant de diffusion,
utilisez la commande getBroadcast($broadcastId) de la méthode OpenTok\OpenTok classe.
$broadcast = $opentok->getBroadcast($broadcastId);
Vous pouvez modifier la mise en page de manière dynamique à l'aide de la commande
OpenTok->updateBroadcastLayout($broadcastId, $layout) méthode :
use OpenTok\OpenTok;
$layout = Layout::getPIP(); // Or use another get method of the Layout class.
$opentok->updateBroadcastLayout($broadcastId, $layout);
Vous pouvez utiliser le Layout classe permettant de définir les types de mise en page :
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);
Vous pouvez également définir la disposition du partage d'écran en appelant la fonction setScreenshareType() méthode sur un objet de mise en page.
$layout = Layout::getBestFit(); // Other types are not currently supported
$layout->setScreenshareType(Layout::LAYOUT_VERTICAL);
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 OpenTok->generateToken() méthode ou la
Session->generateToken() méthode. Et vous pouvez modifier les classes de mise en page d'un flux
en appelant la méthode OpenTok->updateStream() méthode.
La configuration de la mise en page des diffusions en direct est facultative. Par défaut, les diffusions utilisent la mise en page « best fit » (voir Configuration de la disposition vidéo pour les diffusions en direct OpenTok).
Pour plus d'informations sur les diffusions en direct, consultez la Diffusions en direct avec OpenTok guide du développeur.
Forcer un client à se déconnecter
Votre serveur d'applications peut déconnecter un client d'une session OpenTok en appelant la méthode forceDisconnect($sessionId, $connectionId)
méthode de la OpenTok\OpenTok classe.
use OpenTok\OpenTok;
// Force disconnect a client connection
$opentok->forceDisconnect($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
Opentok.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 Opentok.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
Opentok.DisableForceMute(sessionId) ou Opentok.DisableForceMuteAsync(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, $payload, $connectionId) de la méthode
OpenTok\OpenTok classe.
Les $sessionId est l'identifiant de la session.
Les $payload Le paramètre est un tableau associatif permettant de définir les
éléments suivants :
-
data(chaîne de caractères) -- La chaîne de caractères contenant les données du signal. Vous pouvez envoyer jusqu'à 8 ko. -
type(chaîne de caractères) -- — (Facultatif) La chaîne de caractères indiquant le type du signal. Vous pouvez envoyer jusqu'à 128 caractères ; seuls les caractères suivants sont autorisés : A-Z, a-z, les 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.
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);
Pour plus d'informations, voir le Guide du développeur sur la signalisation OpenTok.
Travailler avec SIP Interconnect
Vous pouvez ajouter un flux audio uniquement provenant d'une passerelle SIP tierce externe à l'aide de la fonctionnalité « Interconnexion SIP ». Pour cela, vous devez disposer d'un URI SIP, de l'identifiant de session auquel vous souhaitez ajouter le flux audio uniquement , ainsi que d'un jeton permettant de se connecter à cet identifiant de session.
Pour lancer un appel SIP, composez le dial($sessionId, $token, $sipUri, $options) de la méthode
OpenTok\OpenTok classe :
$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);
Pour plus d'informations, voir le Guide du développeur OpenTok SIP Interconnect.
Utilisation d'Audio Connector
Vous pouvez lancer un Connecteur audio WebSocket
en appelant la fonction connectAudio() de la méthode
OpenTok\OpenTok classe.
Exigences
Vous avez besoin d'une clé API OpenTok et d'un secret API, que vous pouvez obtenir en vous connectant à votre Compte Video API de Vonage.
Le SDK PHP d'OpenTok nécessite PHP 7.2 ou une version ultérieure.
Notes de mise à jour
Voir le Communiqués pour plus de détails.
Modifications importantes depuis la version 2.2.0
Modifications apportées à la version 2.2.1 :
Le paramètre par défaut pour le createSession() La méthode consiste à créer une session avec le mode multimédia défini
sur « relayed ». Dans les versions précédentes du SDK, le paramètre par défaut consistait à utiliser le routeur multimédia OpenTok
(mode multimédia défini sur « routed »). Dans une session en mode « relayed », les clients tentent d’échanger des flux directement
entre eux (peer-to-peer) ; si les clients ne parviennent pas à se connecter en raison de restrictions de pare-feu, la
session utilise le serveur TURN d’OpenTok pour relayer les flux audio et vidéo.
Nouveautés de la version 2.2.0 :
Cette version du SDK permet de travailler avec les archives OpenTok.
Les noms de nombreuses méthodes de l'API ont changé. De nombreux noms de méthodes ont été modifiés pour adopter la notation « camel case », notamment les suivants :
\OpenTok\OpenTok->createSession()\OpenTok\OpenTok->generateToken()
Notez également que le options du paramètre OpenTok->createSession() La méthode dispose d'un mediaMode
propriété au lieu d'un p2p propriété.
La classe API_Config a été supprimée. Enregistrez votre clé API OpenTok et votre secret API dans le code, en dehors des fichiers du SDK.