實時 API 示例:創建現場工作
簡介
該示例創建一個具有三個輸出格式的簡單實時作業:1080p,720p和480p。
因為實時 API未啟用 CORS 且必須從服務器端應用程序訪問,API 請求通過用 PHP 編寫的簡單代理髮送。您可以使用任何服務器端語言來重現此代碼-它所做的只是收集JavaScript發送的請求參數,將請求發送到API,然後將響應返回給JavaScript。所有代碼都可以在下面的代碼部分。
創建實時工作應用
在此找到與此樣本相關的所有代碼GitHub資料庫。看筆實時API示例:創建現場工作通過Brightcove學習服務( @ rcrooks1969) 上密碼筆。
使用編碼器
代理代理代碼
除了在CodePen(和相關的GitHub存儲庫)中找到的代碼外,此示例還需要代理來發出API請求並將響應返回給應用程序。對於此應用程序,我們使用了PHP,下面顯示了代碼。您可以使用任何服務器端語言來構建代理。
<?php /** * live-proxy.php - Brightcove Live API 的代理 * 發出請求,並返迴響應 * 訪問:*(注意你應該*總是*通過 HTTPS 訪問代理)* 方法:發布 * * @post {string}網址-API 請求的 URL * @post {string} [請求類型 = 獲取]-請求的 HTTP 方法 * @post {string} [請求主體]-JSON 數據與寫請求一起發送 * 有的{string} API 密鑰-實時 @postAPI 密鑰 * * @returns {string} $ 響應-從 API 接收到的 JSON 響應 *///CORS 啟用和其他標題標頭(「訪問控制-允許-來源:*」); 標題(「內容類型:應用程序/JSON」); 標題(「X-內容類型選項:nosniff」); 標題(「X-X-XSS」-保護」); $ 請求數據 = json_decode(文件 _get_內容('php://輸入 '));//設置 API 調用//獲取 API 密鑰 $ 請求數據 > API 密鑰 = $ 請求數據 > API 密鑰;//獲取請求類型或默認獲取如果($ 請求數據 > 請求類型){ $method = $requestData->requestType; }更多{ $method = "GET"; } //安全檢查 $ 針 = '.io'; $ 端 API = STRPOS($ 請求數據 > 網址,$ 針)+ 3; $ 下文 = 子海峽($ 請求數據 > URL,$ 端 API,1); 如果(請求數據 > 網址,'Api.bcovlive.io')==)); 如果($ 請求數據 > 網址,{ exit('{"ERROR":"Only requests to Brightcove Live APIs are accepted by this proxy"} '== '/ ' && $下一頁!== '?'){ exit('{"ERROR": "There was a problem with your API request - please check the URL"} ');}//從表單數據 $ 請求得到 URL 和授權信息 = $ 請求數據 > URL; //發送http 請求,如果(請求數據 > 請求正文){ $ch = curl_init($request); curl_setopt_array($ch, array( CURLOPT_CUSTOMREQUEST => $method, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_SSL_VERIFYPEER => FALSE, CURLOPT_HTTPHEADER => array( 'Content-type: application/json', "X-API-KEY: {$apikey}「,),CURLOPT_POSTFILD => $ 請求數據 > 請求體)); $ 響應 = curl_exec($ CH); 捲曲關閉($ CH);} 否則{ $ch = curl_init($request); curl_setopt_array($ch, array( CURLOPT_CUSTOMREQUEST => $method, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_SSL_VERIFYPEER => FALSE, CURLOPT_HTTPHEADER => array( 'Content-type: application/json', "X-API-KEY: {$apikey}「,)); $ 響應 = 捲曲 _exec($ CH); 捲曲關閉($ CH);}//檢查錯誤,如果($ 響應 == = 假){ $logEntry = "\nError:\n". "\n".date("Y-m-d H:i:s")." UTC \n" .$response; $logFileLocation = "log.txt"; $fileHandle = fopen($logFileLocation, 'a') or die("-1"); fwrite($fileHandle, $logEntry); fclose($fileHandle); echo '{"ERROR": "There was a problem with your API call"} '+ 死亡(捲曲錯誤($));}//解碼響應//$ 響應代碼;//傳回響應給 AJAX 調用者 $ 響應編碼 = json_解碼($ 響應);//如果(!isset($ 響應編碼){ // $response = '{null} ';//} 回顯 $ 響應;?>