SDK de PHP de la API de Video de Vonage
El SDK PHP de Vonage Video proporciona métodos para:
- Creación de sesiones.
- Generación de fichas
- Trabajar con arroyos
- Trabajar con archivos
- Desconectar a los clientes de las sesiones
- Obligar a los clientes de una sesión a desconectarse o silenciar el audio publicado
- Envío de señales a los clientes conectados a una sesión
Instalación
Requisitos
Debes crear una aplicación de Vonage con capacidades de video. Luego usarás la clave privada y el ID de la aplicación para configurar el cliente API. Puedes crear la aplicación ingresando a tu cuenta de Cuenta API de Video de Vonage.
El SDK PHP de Vonage Video requiere PHP 8.0 o superior.
Compositor (recomendado)
Composer ayuda a gestionar las dependencias de los proyectos PHP. Más información aquí: http://getcomposer.org
Añada este paquete (vonage/video) a su composer.json o ejecute lo siguiente en la línea de comandos
línea de comandos:
$ ./composer.phar require vonage/video
Este paquete requiere la aplicación vonage/client-core para que funcione. Asegúrese de que también está instalado:
$ ./composer.phar require vonage/client-core
Utilización
Inicialización de
Este paquete sigue el PSR-4 estándar de carga automática. Si compositor requiere el autoloader generado:
require "<projectpath>/vendor/autoload.php";
Una vez cargados los archivos del SDK, puedes crear un cliente API de Vonage usando la clave privada y el
ID de aplicación asociada con tu aplicación de video de Vonage. Luego, puedes acceder al SDK de video mismo mediante
llamando a $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();
Opciones de inicialización
El cliente de Vonage Video permite algunas anulaciones de valores cuando surgen necesidades especiales, tales como como apuntar a un centro de datos diferente o cambiar el tiempo de espera del cliente HTTP subyacente. Para estas situaciones, puedes pasar una matriz de opciones adicionales como tercer parámetro.
Permitimos las siguientes opciones adicionales para el SDK de vídeo:
base_video_url- Cambia el dominio al que apunta el SDK. Útil cuando se necesita seleccionar un centro de datos específico o apuntar a una versión simulada de la API para realizar pruebas.
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();
Creación de sesiones
Para crear una sesión, utilice la función createSession($options) del cliente de
cliente de Vonage Video. La dirección $options es una matriz opcional que se utiliza para especificar lo siguiente:
Establece si la sesión utilizará el enrutador de medios o intentará enviar flujos directamente entre clientes.
Establecer si la sesión creará automáticamente archivos (implica el uso de sesión enrutada).
Especificar una pista de ubicación.
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();
En getSessionId() devuelve el ID de sesión,
que se utiliza para identificar la sesión en las bibliotecas de clientes de Vonage Video.
Para más información sobre las sesiones, consulte el sesiones guía del desarrollador.
Generación de fichas
Una vez creada una Sesión, puede empezar a generar Tokens para que los clientes los utilicen cuando se conecten a ella.
Puede generar un token llamando a la función generateClientToken($sessionId, $options) en el cliente de vídeo.
En $options es una matriz opcional que se utiliza para establecer el rol,
el tiempo que falta para que caduque el token y los datos de conexión del token. Para el control de la disposición en archivos y transmisiones,
también se puede establecer la lista inicial de clases de diseño de los flujos publicados desde las conexiones que utilizan este token.
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']
));
Para más información sobre fichas, consulte la sección Crear token guía del desarrollador.
Trabajar con flujos
Puede obtener información sobre un flujo llamando a la función getStream($sessionId, $streamId) del cliente de
cliente de 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
Puede obtener información sobre todos los flujos de una sesión llamando a la función listStreams($sessionId) del cliente de
cliente de Vonage Video.
// Get list of streams from just a sessionId (fetched from a database)
$streamList = $client->video()->listStreams($sessionId);
$streamList->count(); // total count
Trabajar con archivos
Sólo puedes archivar sesiones que utilicen el enrutador de medios de video de Vonage (sesiones con el modo de medios configurado como enrutado).
Puedes iniciar la grabación de una sesión de video de Vonage usando el botón startArchive($archiveConfig) método
del cliente de Vonage Video. Esto devolverá un Vonage\Video\Archive instancia.
El parámetro
$archiveConfig es un objeto de configuración y se utiliza para determinar el ID de sesión, asignar un nombre, si se va a grabar audio y/o
vídeo, el modo de salida deseado para el Archivo y la resolución deseada, si procede. Tenga en cuenta que sólo puede iniciar un
Archivo en una Sesión que tenga clientes conectados.
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 ajusta el outputMode opción de ArchiveConfig::OUTPUT_MODE_INDIVIDUALhace que cada secuencia del archivo se grabe en su propio archivo individual. Tenga en cuenta que no puede especificar la resolución cuando configura la opción outputMode opción de ArchiveConfig::OUTPUT_MODE_INDIVIDUAL. En ArchiveConfig::OUTPUT_MODE_COMPOSED (el valor predeterminado) hace que todos los flujos del archivo se graben en un único archivo (compuesto).
Tenga en cuenta que también puede crear una sesión archivada automáticamente, pasando en ArchiveMode::ALWAYS
como el archiveMode de la options pasado al parámetro $client->video()->createSession()
(véase "Creación de sesiones", más arriba).
Puede detener la grabación de un archivo iniciado mediante la tecla stopArchive($archiveId) del cliente de
cliente de Vonage Video.
// Stop an Archive from an archiveId (fetched from database)
$client->video()->stopArchive($archiveId);
Para obtener un Vonage\Video\Archive (y toda su información) a partir de un ID de archivo, utilice la función
getArchive($archiveId) del cliente de Vonage Video.
$archive = $client->video()->getArchive($archiveId);
Para eliminar un Archivo, puede llamar a la función deleteArchive($archiveId) del cliente de Vonage Video.
// Delete an Archive from an archiveId (fetched from database)
$client->video()->deleteArchive($archiveId);
También puede obtener una lista de todos los Archivos que ha creado (hasta 1000) con su Clave API. Para ello
utilizando la función listArchives($filter) de Vonage Video Client.
Puede pasar un KeyValueFilter objeto con offset, counto sessionId opciones. El filtro es opcional y puede ayudarle a subdividir los resultados. Tenga en cuenta que la lista devolverá automáticamente la siguiente página de resultados, por lo que no es necesario llamar manualmente a una función offset o count a menos que sea específicamente necesario.
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();
En el caso de los archivos compuestos, puede cambiar el diseño dinámicamente, utilizando la función updateArchiveLayout($archiveId, $layoutType) método:
$layout = Layout::getPIP(); // Or use another get method of the Layout class.
$client->video()->setArchiveLayout($archiveId, $layout);
Puede establecer la clase de diseño inicial para los flujos de un cliente estableciendo la clase layout cuando
al crear el token para el cliente, utilizando la opción generateClientToken().
La configuración del diseño de los archivos compuestos es opcional. Por defecto, los archivos compuestos utilizan la disposición disposición "más adecuada" (véase Personalización del diseño de vídeo para composiciones archivos).
Para más información sobre el archivado, consulte el Archivo de vídeo de Vonage guía del desarrollador.
Forzar la desconexión de un cliente
Tu servidor de aplicaciones puede desconectar a un cliente de una sesión de Vonage Video llamando a la función disconnectClient($sessionId, $connectionId)
del cliente de Vonage Video.
// Force disconnect a client connection
$client->video()->disconnectClient($sessionId, $connectionId);
Obligar a los clientes de una sesión a silenciar el audio publicado
Puede forzar al editor de un flujo específico a dejar de publicar audio utilizando la opción
forceMuteStream($sessionId, $stream) método.
Puede forzar al editor de todos los flujos de una sesión (excepto una lista opcional de flujos)
para que deje de publicar audio mediante la opción forceMuteAll($sessionId, $excludedStreamIds) .
A continuación, puede desactivar el estado mudo de la sesión llamando al método
disableForceMute(sessionId) método.
Envío de señales
Una vez creada una sesión, puede enviar señales a todos los miembros de la sesión o a una conexión específica.
Puede enviar una señal llamando a la función signal($sessionId, $type, $data, $connectionId) del cliente de
cliente de Vonage Video.
En $sessionId es el ID de la sesión.
En $data (cadena) es una cadena de datos para la señal. Puede enviar un máximo de 8kB.
En $type (cadena) es la cadena de tipo para la señal. Puede enviar un máximo de 128 caracteres, y sólo se permiten los siguientes caracteres: A-Z, a-z, Numbers (0-9), '-', '_' y '~'.
En $connectionId es una cadena opcional que se utiliza para especificar el ID de conexión de un cliente conectado a la sesión.
un cliente conectado a la sesión. Si especifica este valor, la señal se envía a
al cliente especificado. En caso contrario, la señal se envía a todos los clientes conectados a la sesión.
// 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);
Para más información, consulte el Desarrollador de señalización de vídeo de Vonage guía.
Notas de publicación
Véase el Comunicados para más detalles.