Live Stationの概要
    • PDF

    Live Stationの概要

    • PDF

    記事の要約

    概要

    Live Stationは、リアルタイムのライブ配信サービスの構築に必要なすべての機能を提供する動画エンコードプラットフォームです。
    Live Stationを使用すると、ウェブインターフェイスを通じて、単一の RTMPオリジナルストリームから簡単かつ迅速に複数の Multi-bitrate出力ストリームを作成し、映像を HLS、DASHでパケット化して転送することができます。
    1つの高画質ライブ映像をさまざまな画質に変換する機能だけでなく、リアルタイム DVR(Digital Video Recorder、デジタルビデオレコーダー)機能を提供します。これにより作成された動画ファイルを利用して再配信サービスを構築することもできます。

    それと同時に、ライブメディア動画を手軽に他のプラットフォームへ同時配信できる Re-Stream機能も提供します。YouTube、Twitch、Afreeca TVなどさまざまな放送プラットフォームで同時に動画を配信でき、配信状況を Live Stationでまとめて管理できます。

    共通の設定

    Live Station API URL

    https://livestation.apigw.ntruss.com/api/v2
    

    リクエストヘッダ

    ヘッダ名必須の有無説明
    x-ncp-apigw-timestampYES1970年1月1日 00:00:00協定世界時(UTC)からの経過時間をミリ秒(Millisecond)で表し、API Gatewayサーバとの時間差が5分以上の場合は無効なリクエストとみなす
    x-ncp-apigw-timestamp:{Timestamp}
    x-ncp-iam-access-keyYESNAVERクラウドプラットフォームポータルから発行された Access Key ID
    x-ncp-iam-access-key:{Sub Account Access Key}
    x-ncp-apigw-signature-v2YESAccess Key IDと Secret Keyで暗号化した署名
    x-ncp-apigw-signature-v2:{API Gateway Signature}
    Content-TypeYESRequest body content typeを application/jsonに指定
    Content-Type: application/json
    x-ncp-region_codeYESリージョンコード (KR)

    認証ヘッダ

    Live Station APIを使用するには API Gateway認証が必要です。

    API Gateway認証関連の詳細なガイドは、NAVERクラウドプラットフォーム APIをご参照ください。

    AUTHPARAMSの作成

    AUTHPARAMSのリクエスト例

    curl -i -X GET \
       -H "x-ncp-apigw-timestamp:1505290625682" \
       -H "x-ncp-iam-access-key:D78BB444D6D3C84CA38A" \
       -H "x-ncp-apigw-signature-v2:WTPItrmMIfLUk/UyUIyoQbA/z5hq9o3G8eQMolUzTEo=" \
       -H "x-ncp-region_code:KR" \
    'https://livestation.apigw.ntruss.com/api/v2/channels'
    
    • Signatureの作成(改行文字は\nを使用)

      • リクエストに合わせて StringToSignを作成し、SecretKeyを HmacSHA256アルゴリズムで暗号化した後、Base64でエンコードします。

      • この値をx-ncp-apigw-signature-v2として使用します。

        リクエストStringToSign
        GET /api/v2/channels?pageNo=1
        x-ncp-apigw-timestamp={timestamp}
        x-ncp-iam-access-key={accesskey}
        x-ncp-apigw-signature-v2={signature}
        GET /api/v2/channels?pageNo=1
        {timeStamp}
        {accessKey}
    • サンプルコード

    public String makeSignature() {
        String space = " ";					// 空白
        String newLine = "\n";  				// 改行
        String method = "GET";  				// HTTPメソッド
        String url = "/api/v2/channels?pageNo=1";	// ドメインを除く「/」以下の全体 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;
    }
    
    /*
    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
    */
    
    
    
    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);
    }
    
    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?pageNo=1"			# ドメインを除く「/」以下の全体 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
    
    function makeSignature() {
    	nl=$'\\n'
    
    	TIMESTAMP=$(echo $(date +%s000))	# 現在のタイムスタンプ(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?pageNo=1"		# ドメインを除く「/」以下の全体 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)
    }
    

    Live Station APIのリクエスト構成

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

    Live Station APIのリクエストサンプル

    curl -i -s -X POST \
       -H "Content-Type:application/json" \
       -H "x-ncp-apigw-timestamp:1521787414578" \
       -H "x-ncp-iam-access-key:6uxz1nKkcYwUjWRG5Q1V7NsW0i5jErlu2NjBXXgy" \
       -H "x-ncp-apigw-signature-v2:iJFK773KH0WwQ79PasqJ+ZGixtpDQ/abS57WGQdld2M=" \
       -H "x-ncp-region_code:KR" \
       "https://livestation.apigw.ntruss.com/api/v2/channles"\
       -d "{ \"channelName\": \"api-guide\", \"qualitySetId\": 1234, \"qualitySetId\": false, \"record\" : {\"type\":\"NO_RECORD\"}, \"cdn\": { \"createCdn\" : true, \"cdnType\": \"GLOBAL_EDGE\", \"profileId\":1111, \"regionType\":\"KOREA\", \"cdnInstanceNo\":123456}, \"drmEnabledYn\":false}"
    

    Live Station API Content-Type

    Live 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.