即時 API 範例:建立即時工作

在此示例中,您將學習如何創建簡單的實時作業。

簡介

此示例創建具有三個輸出格式的簡單實時作業:1080p,720p和480p。

因為Live API未啟用CORS,必須從服務器端應用程序訪問,API請求通過用PHP編寫的簡單代理髮送。您可以使用任何服務器端語言來重現此代碼-它所做的只是收集JavaScript發送的請求參數,將請求發送到API,然後將響應返回給JavaScript。所有代碼都可以在下面的代碼部分

創建實時工作應用

在此 GitHub 存放庫中找到與此範例相關聯的所有程式碼。

看筆實時API示例:創建現場工作通過Brightcove學習服務( @ rcrooks1969) 上密碼筆

使用編碼器

以下是一些有效使用上述 CodePen 的提示:

  • 按一下「結果」按鈕,切換播放器的實際顯示。
  • 按一下 HTML/CSS/JS 按鈕以顯示其中一種程式碼類型。
  • 按一下右上角的 CodePen 上的 [編輯 ],將此 CodePen 分支到您自己的帳戶。
  • 在此 GitHub 存放庫中找到與此範例相關聯的所有程式碼。

代理代理代碼

除了在CodePen(和相關的GitHub存儲庫)中找到的代碼外,此示例還需要代理來發出API請求並將響應返回給應用程序。對於此應用程序,我們使用了PHP,代碼如下所示。您可以使用任何服務器端語言來構建代理。

代理示例代碼
	<?php
	/**
	 * live-proxy.php-Brightcove Live API的代理
	 *發出請求,並返迴響應
	 * 存取:
	 *(請注意,您應該*始終*通過HTTPS訪問代理)
	 * 方法:開機自檢
	 *
	 * @post {字符串} 網址-API 請求的 URL
	 * @post {字符串} [請求類型 = 獲取]-請求的 HTTP 方法
	 * @post {string} [requestBody]-與寫請求一起發送的JSON數據
	 * @post {string} apiKey-實時API密鑰
	 *
	 * @returns {字符串} $ 響應-從 API 接收到的 JSON 響應
	 */
	
	
	//CORS 啟用和其他標題
	header(“ Access-Control-Allow-Origin:*”);
	頭(「內容類型:應用程序 /json」);
	頭(「X 內容類型-選項:nosniff」);
	標頭(「XXSS-保護」);
	
	
	$ requestData = json_decode(file_get_contents('php:// input'));
	
	//設定 API 呼叫
	//獲取api密鑰
	$ apikey = $ requestData-> apiKey;
	//獲取請求類型或默認為 GET
	如果($ requestData-> requestType){
			$ method = $ requestData-> requestType;
	}其他{
			$ 方法 =「獲取」;
	}
	//更多安全檢查
	$ needle ='.io';
	$ endapi = strpos($ requestData-> url,$ needle)+ 3;
	
	$ nextChar = substr($ requestData-> url,$ endapi,1);
	
	如果(strpos($ requestData-> url,'api.bcovlive.io')== false){
			exit('{“ ERROR”:“此代理僅接受對Brightcove Live API的請求”}');
	} else if($ nextChar!=='/'&& $ nextChar!=='?'){
			退出('{“錯誤”:“您的API請求存在問題-請檢查URL”}');
	}
	//從表單數據獲取 URL 和授權信息
	$ request = $ requestData-> url;
	//傳送http 請求
	如果($ requestData-> requestBody){
		$ 查詢 = 初始化($ 請求);
		curl_setopt_array($ ch,array(
			CURLOPT_CUSTOMREQUEST => $方法,
			CURLOPT_RETURNTRANSFER => TRUE,
			CURLOPT_SSL_VERIFYPEER =>否,
			CURLOPT_HTTPHEADER =>數組(
				'內容類型:應用程序/json',
				「X-API 鍵:{$ 萬用鍵}」,
			)、
			CURLOPT_POSTFIELDS => $ requestData-> requestBody
		);
		$ 響應 = 捲曲($ 查詢);
		curl_close($ ch);
	}其他{
		$ 查詢 = 初始化($ 請求);
		curl_setopt_array($ ch,array(
			CURLOPT_CUSTOMREQUEST => $方法,
			CURLOPT_RETURNTRANSFER => TRUE,
			CURLOPT_SSL_VERIFYPEER =>否,
			CURLOPT_HTTPHEADER =>數組(
				'內容類型:應用程序/json',
				「X-API 鍵:{$ 萬用鍵}」,
			)
		);
		$ 響應 = 捲曲($ 查詢);
		curl_close($ ch);
	}
	
	//檢查錯誤
	if($ response === FALSE){
			$ logEntry =“ \\ n錯誤:\\ n”。
			“ \\ n” .date(“ Ymd H:i:s”)。UTC \\ n“
			。$ response;
			$ logFileLocation =“ log.txt”;
			$ 文件句柄 = fopen($ 日誌文件位置,'A')或死亡(「-1」);
			fwrite($ fileHandle,$ logEntry);
			fclose($ fileHandle);
			回顯'{“ ERROR”:“您的API調用存在問題”}'+
			die(curl_error($ ch));
	}
	
	//解碼響應
	//$ 響應數據 = json_解碼($ 響應,真);
	//將響應返回給 AJAX 調用者
	$ responseDecoded = json_decode($ response);
	//如果(!isset($ responseDecoded)){
	//	 $ response ='{null}';
	//}
	echo $ response;
	?>