MENU
      VOD Station 개요

        VOD Station 개요


        기사 요약

        개요

        VOD Station은 Object Storage에 저장된 수많은 영상 파일을 다양한 화질로 쉽게 인코딩 할 수 있고, HLS/DASH 프로토콜로 스트리밍할 수 있는 서비스입니다. HTTP API를 이용하여 VOD Station의 모든 기능을 제어할 수 있습니다.

        공통 설정

        VOD Station API URL

        https://vodstation.apigw.ntruss.com/api/v2
        HTTP

        요청 헤더

        헤더명설명
        x-ncp-region_code네이버 클라우드 플랫폼 region code (GET 요청에 포함하지 않음)
        x-ncp_region_code:{Region Code}
        x-ncp-apigw-timestamp1970년 1월 1일 00:00:00 협정 세계시(UTC)부터의 경과 시간을 밀리초(Millisecond)로 나타내며
        API Gateway 서버와 시간 차가 5분 이상 나는 경우 유효하지 않은 요청으로 간주
        x-ncp-apigw-timestamp:{Timestamp}
        x-ncp-iam-access-key네이버 클라우드 플랫폼 포털에서 발급받은 Access Key ID
        x-ncp-iam-access-key:{Sub Account Access Key}
        x-ncp-apigw-signature-v2Access Key ID와 맵핑되는 Secret Key로 암호화한 서명
        HMAC 암호화 알고리즘은 HmacSHA256 사용
        x-ncp-apigw-signature-v2:{API Gateway Signature}
        Content-TypeRequest body가 포함된 요청의 경우 Content type을 application/json으로 요청
        Content-Type: application/json

        인증 헤더

        VOD Station API를 사용하기 위해서는 API Gateway 인증이 필요합니다.
        상세한 API Gateway 인증 관련 설명은 NAVER Cloud Platform API를 참고해 주십시오.

        AUTHPARAMS 생성하기

        • AUTHPARAMS 요청 예시
        curl -i -X GET \
           -H "x-ncp-region_code:KR" \
           -H "x-ncp-apigw-timestamp:1505290625682" \
           -H "x-ncp-iam-access-key:D78BB444D6D3C84CA38A" \
           -H "x-ncp-apigw-signature-v2:WTPItrmMIfLUk/UyUIyoQbA/z5hq9o3G8eQMolUzTEo=" \
         'https://vodstation.apigw.ntruss.com/api/v2/channels'
        Plain text
        • Signature 생성(개행 문자는 \n을 사용)

          • 요청에 맞게 StringToSign을 생성하고 SecretKey로 HmacSHA256 알고리즘으로 암호화한 후 Base64로 인코딩합니다.

          • 이 값을 x-ncp-apigw-signature-v2로 사용합니다.

            요청StringToSign
            GET /api/v2/channels?limit=10
            x-ncp-apigw-timestamp={timestamp}
            x-ncp-iam-access-key={accesskey}
            x-ncp-apigw-signature-v2={signature}
            GET /api/v2/channels?limit=10
            {timeStamp}
            {accessKey}
        • 샘플 코드

        public String makeSignature() {
            String space = " ";					// 공백
            String newLine = "\n";  				// 줄바꿈
            String method = "GET";  				// HTTP 메서드
            String url = "/api/v2/channels?isPage=true";	// 도메인을 제외한 "/" 아래 전체 url (쿼리스트링 포함)
            String accessKey = "{accessKey}";		// access key id (from portal or Sub Account)
            String secretKey = "{secretKey}";		// secret key (from portal or Sub Account)
            String timestamp = String.valueOf(System.currentTimeMillis());		// 현재 타임스탬프 (epoch, millisecond)
        
            String message = new StringBuilder()
                .append(method)
                .append(space)
                .append(url)
                .append(newLine)
                .append(timestamp)
                .append(newLine)
                .append(accessKey)
                .toString();
        
            SecretKeySpec signingKey = new SecretKeySpec(secretKey.getBytes("UTF-8"), "HmacSHA256");
            Mac mac = Mac.getInstance("HmacSHA256");
            mac.init(signingKey);
        
            byte[] rawHmac = mac.doFinal(message.getBytes("UTF-8"));
            String encodeBase64String = Base64.encodeBase64String(rawHmac);
        
          return encodeBase64String;
        }
        Java
        /*
        https://code.google.com/archive/p/crypto-js/
        https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/crypto-js/CryptoJS%20v3.1.2.zip
        */
        
        /*
        CryptoJS v3.1.2
        code.google.com/p/crypto-js
        (c) 2009-2013 by Jeff Mott. All rights reserved.
        code.google.com/p/crypto-js/wiki/License
        */
        <script type="text/javascript" src="./CryptoJS/rollups/hmac-sha256.js"></script>
        <script type="text/javascript" src="./CryptoJS/components/enc-base64.js"></script>
        
        function makeSignature(secretKey, method, url, timestamp, accessKey) {
        	var space = " ";
        	var newLine = "\n";
        
        	var hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, secretKey); // secret key
        	hmac.update(method);		// HTTP 메서드
        	hmac.update(space);		// 공백
        	hmac.update(url);		// 도메인을 제외한 "/" 아래 전체 url (쿼리스트링 포함)
        	hmac.update(newLine);		// 줄바꿈
        	hmac.update(timestamp);		// 현재 타임스탬프 (epoch, millisecond)
        	hmac.update(newLine);		// 줄바꿈
        	hmac.update(accessKey);		// access key (from portal or iam)
        
        	var hash = hmac.finalize();
        
        	return hash.toString(CryptoJS.enc.Base64);
        }
        JavaScript
        import sys
        import os
        import hashlib
        import hmac
        import base64
        import requests
        import time
        
        def	make_signature():
        	timestamp = int(time.time() * 1000)
        	timestamp = str(timestamp)				# 현재 타임스탬프 (epoch, millisecond)
        
        	access_key = "{accessKey}"				# access key id (from portal or Sub Account)
        	secret_key = "{secretKey}"				# secret key (from portal or Sub Account)
        	secret_key = bytes(secret_key, 'UTF-8')
        
        	method = "GET"						# HTTP 메서드
        	uri = "/api/v2/channels?isPage=true"			# 도메인을 제외한 "/" 아래 전체 url (쿼리스트링 포함)
        
        	message = method + " " + uri + "\n" + timestamp + "\n"
        	+ access_key
        	message = bytes(message, 'UTF-8')
        	signingKey = base64.b64encode(hmac.new(secret_key, message, digestmod=hashlib.sha256).digest())
        	return signingKey
        Python
        <?php
        
        $access_key = "{accessKey}";
        $secret_key = "{secretKey}";
        $url = "/api/v2/channels";
        $timestamp = getMillisecond();
        
        $message = "GET";
        $message .= " ";
        $message .= $url;
        $message .= "\n";
        $message .= $timestamp;
        $message .= "\n";
        $message .= $access_key;
        
        $signature = base64_encode(hash_hmac('sha256', $message, $secret_key, true));
        
        $headers = array(
          "Content-Type: application/json;",
          "x-ncp-apigw-timestamp: ".$timestamp."",
          "x-ncp-iam-access-key: ".$access_key."",
          "x-ncp-apigw-signature-v2: ".$signature.""
        );
        
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, "https://vodstation.apigw.ntruss.com".$url);
        curl_setopt($ch, CURLOPT_HEADER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $response = curl_exec($ch);
        
        echo $response;
        
        function getMillisecond()
        {
          list($microtime, $timestamp) = explode(' ', microtime());
          $time = $timestamp.substr($microtime, 2, 3);
          return $time;
        }
        
        ?>
        PHP
        function makeSignature() {
        	nl=$'\\n'
        
        	TIMESTAMP=$(echo $(($(date +%s%N)/1000000)))	# 현재 타임스탬프 (epoch, millisecond)
        	ACCESSKEY="{accessKey}"				# access key id (from portal or Sub Account)
        	SECRETKEY="{secretKey}"				# secret key (from portal or Sub Account)
        	METHOD="GET"					# HTTP 메서드
        	URI="/api/v2/channels?isPage=true"		# 도메인을 제외한 "/" 아래 전체 url (쿼리스트링 포함)
        
        	SIG="$METHOD"' '"$URI"${nl}
        	SIG+="$TIMESTAMP"${nl}
        	SIG+="$ACCESSKEY"
        
        	SIGNATURE=$(echo -n -e "$SIG"|iconv -t utf8 |openssl dgst -sha256 -hmac $SECRETKEY -binary|openssl enc -base64)
        }
        Bash

        VOD Station API 요청 구성

        Header
          x-ncp-region_code:{Region Code}
          x-ncp-apigw-timestamp:{Timestamp}
          x-ncp-iam-access-key:{Sub Account Access Key}
          x-ncp-apigw-signature-v2:{API Gateway Signature}
          Content-Type:application/json
        Body
          Json Object
        URL
          https://vodstation.apigw.ntruss.com/api/v2/{action}
        Plain text

        VOD Station API 요청 샘플

        curl -i -s -X POST \
         -H "Content-Type:application/json" \
         -H "x-ncp-region_code:KR" \
         -H "x-ncp-apigw-timestamp:1521787414578" \
         -H "x-ncp-iam-access-key:6uxz1nKkcYwUjWRG5Q1V7NsW0i5jErlu2NjBXXgy" \
         -H "x-ncp-apigw-signature-v2:iJFK773KH0WwQ79PasqJ+ZGixtpDQ/abS57WGQdld2M=" \
         "https://vodstation.apigw.ntruss.com/api/v2/channles"\
         -d "{ \"cdn\": {\"profileId\": 1111, \"type\":\"GLOBAL_EDGE\", \"regionType\":\"KOREA\"}, \"createCdn\": true, \"name\": \"api-guide\", \"protocolList\": [ \"HLS\", \"DASH\" ], \"segmentDuration\": 5, \"storageBucketName\": \"guide\"}"
        Plain text

        VOD Station API Content-Type

        VOD Station API HTTP Request와 Response Body를 통해 전달되는 모든 데이터의 Content-type은 application/json을 사용합니다.


        이 문서가 도움이 되었습니까?

        Changing your password will log you out immediately. Use the new password to log back in.
        First name must have atleast 2 characters. Numbers and special characters are not allowed.
        Last name must have atleast 1 characters. Numbers and special characters are not allowed.
        Enter a valid email
        Enter a valid password
        Your profile has been successfully updated.