라이브 API 샘플: 라이브 작업 만들기

이 샘플에서는 간단한 라이브 작업을 만드는 방법을 배웁니다.

서문

이 샘플은 세 가지 출력 변환이있는 간단한 라이브 작업을 만듭니다. 1080p, 720p 및 480p.

Live API는 CORS가 지원되지 않으며 서버측 앱에서 액세스해야 하므로 PHP로 작성된 간단한 프록시를 통해 API 요청이 전송됩니다. 이를 서버 측 언어로 재현 할 수 있습니다. 자바 스크립트에서 보낸 요청 매개 변수를 수집하고 API에 요청을 보낸 다음 자바 스크립트에 응답을 반환하기 만하면됩니다. 모든 코드는 아래코드 섹션에서 찾을 수있습니다.

라이브 작업 앱 만들기

GitHub 리포지토리에서 이 샘플과 관련된 모든 코드를 찾아보세요 .

라이브 API 샘플 보기: 라이브 작업 만들기 Brightcove 학습 서비스( @rcrooks1969 ) 에코드펜 .

코드펜 사용

위의 CodePen을 효과적으로 사용하기위한 몇 가지 팁은 다음과 같습니다.

프록시 코드

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;
	?>