即時 API 範例:建立即時工作
簡介
此示例創建具有三個輸出格式的簡單實時作業:1080p,720p和480p。
因為Live API未啟用CORS,必須從服務器端應用程序訪問,API請求通過用PHP編寫的簡單代理髮送。您可以使用任何服務器端語言來重現此代碼-它所做的只是收集JavaScript發送的請求參數,將請求發送到API,然後將響應返回給JavaScript。所有代碼都可以在下面的代碼部分。
創建實時工作應用
在此 GitHub 存放庫中找到與此範例相關聯的所有程式碼。看筆實時API示例:創建現場工作通過Brightcove學習服務( @ rcrooks1969) 上密碼筆。
使用編碼器
代理代理代碼
除了在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;
?>