Muestra de API en vivo: Crear un trabajo en vivo

En esta muestra, aprenderá a crear un trabajo en vivo simple.

Introducción

Esta muestra crea un trabajo en vivo simple con tres representaciones de salida: 1080p, 720p y 480p.

Porque el Live API no está habilitado para CORS y se debe acceder a él desde una aplicación del lado del servidor, la solicitud de API se envía a través de un proxy simple escrito en PHP. Puede reproducir esto en cualquier lenguaje del lado del servidor; todo lo que hace es recopilar los parámetros de solicitud enviados por JavaScript, envía la solicitud a la API y devuelve la respuesta a JavaScript. Todo el código se puede encontrar en el sección de código a continuación.

Crear aplicación de trabajo en vivo

Encuentra todo el código asociado a este ejemplo en este repositorio de GitHub.

Ver la pluma Muestra de API en vivo: Cree un trabajo en vivo de Brightcove Learning Services (@rcrooks1969) en CodePen.

Uso de CodePen

Estos son algunos consejos para utilizar eficazmente el CodePen anterior:

  • Cambie la visualización real del reproductor haciendo clic en el Resultado botón.
  • Haga clic en el HTML / CSS / JS botones para mostrar UNO de los tipos de código.
  • Hacer clic Editar en CodePen en la esquina superior derecha para bifurcar este CodePen en su propia cuenta.
  • Encuentra todo el código asociado a este ejemplo en este repositorio de GitHub.

Código proxy

Además del código que se encuentra en CodePen (y el repositorio de GitHub asociado), esta muestra requiere un proxy para realizar la solicitud de API y devolver la respuesta a la aplicación. Para esta aplicación usamos PHP y el código se muestra a continuación. Puede usar cualquier lenguaje del lado del servidor para construir el proxy.

Código de muestra de proxy
	<? php
	/ **
	 * live-proxy.php: proxy para las API de Brightcove Live
	 * realiza la solicitud y devuelve la respuesta
	 * Accediendo:
	 * (tenga en cuenta que debe * siempre * acceder al proxy a través de HTTPS)
	 * Método: PUBLICACIÓN
	 *
	 * @post {string} url: la URL de la solicitud de API
	 * @post {string} [requestType = GET]: método HTTP para la solicitud
	 * @post {string} [requestBody]: datos JSON que se enviarán con solicitudes de escritura
	 * @post {string} apiKey: clave de API en vivo
	 *
	 * @returns {string} $ response: respuesta JSON recibida de la API
	 * /
	
	
	// Habilitación de CORS y otros encabezados
	encabezado ("Acceso-Control-Permitir-Origen: *");
	encabezado ("Tipo de contenido: aplicación / json");
	encabezado ("X-Content-Type-Options: nosniff");
	encabezado ("Protección X-XSS");
	
	
	$requestData = json_decode(file_get_contents('php://input'));
	
	// configura la llamada a la API
	// obtener clave api
	$apikey = $requestData->apiKey;
	// obtener el tipo de solicitud o por defecto GET
	if ($ requestData-> requestType) {
			$method = $requestData->requestType;
	} else {
			$method = "GET";
	}
	// más controles de seguridad
	$needle = '.io';
	$endapi = strpos($requestData->url, $needle) + 3;
	
	$nextChar = substr($requestData->url, $endapi, 1);
	
	if (strpos ($ requestData-> url, 'api.bcovlive.io') == false) {
			exit ('{"ERROR": "Este proxy solo acepta solicitudes a las API de Brightcove Live"}');
	} else if ($nextChar !== '/' && $nextChar !== '?') {
			salir ('{"ERROR": "Hubo un problema con su solicitud de API; verifique la URL"} ');
	}
	// obtener la URL y la información de autorización de los datos del formulario
	$request = $requestData->url;
	// envía la solicitud http
	if ($ requestData-> requestBody) {
		$ch = curl_init($request);
		curl_setopt_array ($ ch, array (
			CURLOPT_CUSTOMREQUEST => $ método,
			CURLOPT_RETURNTRANSFER => VERDADERO,
			CURLOPT_SSL_VERIFYPEER => FALSO,
			CURLOPT_HTTPHEADER => matriz (
				'Tipo de contenido: aplicación / json',
				"X-API-KEY: {$ apikey}",
			),
			CURLOPT_POSTFIELDS => $ requestData-> requestBody
		));
		$response = curl_exec($ch);
		curl_close ($ ch);
	} else {
		$ch = curl_init($request);
		curl_setopt_array ($ ch, array (
			CURLOPT_CUSTOMREQUEST => $ método,
			CURLOPT_RETURNTRANSFER => VERDADERO,
			CURLOPT_SSL_VERIFYPEER => FALSO,
			CURLOPT_HTTPHEADER => matriz (
				'Tipo de contenido: aplicación / json',
				"X-API-KEY: {$ apikey}",
			)
		));
		$response = curl_exec($ch);
		curl_close ($ ch);
	}
	
	// Verifica si hay errores
	if ($ respuesta === FALSO) {
			$logEntry = "\\nError:\\n".
			"\\n".fecha("Ymd H:i:s")". UTC \\ n "
			.$response;
			$logFileLocation = "log.txt";
			$fileHandle = fopen($logFileLocation, 'a') or die("-1");
			fwrite ($ fileHandle, $ logEntry);
			fclose ($ fileHandle);
			echo '{"ERROR": "Hubo un problema con la llamada a la API"} '+
			morir (curl_error ($ ch));
	}
	
	// Decodifica la respuesta
	// $responseData = json_decode($response, TRUE);
	// devuelve la respuesta a la persona que llama AJAX
	$responseDecoded = json_decode($response);
	// if (! isset ($ responseDecoded)) {
	// 	$response = '{null}';
	//}
	echo $ respuesta;
	?>