라이브 API 샘플: 라이브 작업 만들기
서문
이 샘플은 세 가지 출력 변환이있는 간단한 라이브 작업을 만듭니다. 1080p, 720p 및 480p.
Live API는 CORS가 지원되지 않으며 서버측 앱에서 액세스해야 하므로 PHP로 작성된 간단한 프록시를 통해 API 요청이 전송됩니다. 이를 서버 측 언어로 재현 할 수 있습니다. 자바 스크립트에서 보낸 요청 매개 변수를 수집하고 API에 요청을 보낸 다음 자바 스크립트에 응답을 반환하기 만하면됩니다. 모든 코드는 아래코드 섹션에서 찾을 수있습니다.
라이브 작업 앱 만들기
이 GitHub 리포지토리에서 이 샘플과 관련된 모든 코드를 찾아보세요 .펜라이브 API 샘플 보기: 라이브 작업 만들기 Brightcove 학습 서비스( @rcrooks1969 ) 에코드펜 .
코드펜 사용
프록시 코드
CodePen (및 관련 GitHub 리포지토리)에있는 코드 외에도이 샘플에는 API 요청을 수행하고 앱에 응답을 반환하는 프록시가 필요합니다. 이 앱에서는 PHP를 사용했으며 코드는 아래와 같습니다. 서버 측 언어를 사용하여 프록시를 구축 할 수 있습니다.
프록시 샘플 코드
< ?PHP
/**
* live-proxy.php-Brightcove Live API 용 프록시
* 요청을하고 응답을 반환합니다.
* Accessing:
* (HTTPS를 통해 프록시에 * 항상 * 액세스해야합니다)
* 방법: 우편
*
* @post {string} url - the URL for the API request
* @post {string} [requestType=GET] - HTTP method for the request
* @post {string} [requestBody]-쓰기 요청과 함께 전송할 JSON 데이터
* @post {string} apiKey-라이브 API 키
*
* @returns {string} $response - JSON response received from the API
*/
//CORS 활성화 및 기타 헤더
header("Access-Control-Allow-Origin: *");
헤더 (“콘텐츠 유형: 응용 프로그램/json”);
헤더 (“X-컨텐츠 유형 - 옵션: nosniff”);
헤더 (“X-XSS 보호”);
$requestData = json_decode (파일_get_contents ('php: //입력'));
// set up the API call
// API 키 가져 오기
$ apikey = $ requestData-> apiKey;
// get request type or default to GET
if ($ requestData-> requestType) {
$ method = $ requestData-> requestType;
} else {
$method = "GET";
}
// 더 많은 보안 검사
$ needle = '.io';
$ endapi = strpos ($ requestData-> url, $ needle) + 3;
$ nextChar = substr ($ requestData-> url, $ endapi, 1);
if (strpos ($ requestData-> url, 'api.bcovlive.io') == false) {
exit ('{"ERROR”: “이 프록시는 브라이트코브 라이브 API에 대한 요청만 수락합니다"}');
} else if ($ nextChar! == '/'&& $ nextChar! == '?') {
종료 ('{"오류”: "API 요청에 문제가 있습니다. URL을 확인하십시오"} ');
}
// get the URL and authorization info from the form data
$ request = $ requestData-> url;
//send the http request
if ($ requestData-> requestBody) {
$ch = curl_init($request);
curl_setopt_array($ch, array(
컬롭트_커스텀 리퀘스트 => $메소드,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_SSL_VERIFYPEER => FALSE,
컬롭트_HTTP헤더 => 배열 (
'Content-type: application/json',
“X-API 키: {$apikey}”,
),
CURLOPT_POSTFIELDS => $ requestData-> requestBody
));
$response = curl_exec($ch);
curl_close($ch);
} else {
$ch = curl_init($request);
curl_setopt_array($ch, array(
컬롭트_커스텀 리퀘스트 => $메소드,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_SSL_VERIFYPEER => FALSE,
컬롭트_HTTP헤더 => 배열 (
'Content-type: application/json',
“X-API 키: {$apikey}”,
)
));
$response = curl_exec($ch);
curl_close($ch);
}
// Check for errors
if ($response === FALSE) {
$로그 항목 = “\ n오류:\ n”.
“\ n”. 날짜 (“Y-M-D H:s”).“ UTC \\ n "
. $ response;
$ logFileLocation = "log.txt";
$ 파일 핸들 = fopen ($ 로그 파일 위치, 'a') 또는 다이 (“-1");
fwrite ($ fileHandle, $ logEntry);
fclose ($ fileHandle);
에코 '{ "오류": "API 호출에 문제가 있습니다."} '+
die(curl_error($ch));
}
// Decode the response
// $responseData = json_decode($response, TRUE);
// return the response to the AJAX caller
$ responseDecoded = json_decode ($ response);
// if (! isset ($ responseDecoded)) {
// $응답 = '{null}';
//}
echo $response;
?>