1. 程式人生 > >EasyDSS點播與直播伺服器軟體-二次開發介面對接說明示列

EasyDSS點播與直播伺服器軟體-二次開發介面對接說明示列

EasyDSS流媒體伺服器軟體,提供一站式的轉碼、點播、直播、時移回放服務,極大地簡化了開發和整合的工作。其中,點播版本主要包含:上傳、轉碼、分發。直播版本,主要包含:直播、錄影, 直播支援RTMP輸入,RTMP/HLS/HTTP-FLV的分發輸出;錄影支援自定義儲存時長、檢索及下載。提供豐富的二次開發介面,基於JSON的封裝及HTTP呼叫。提供播放鑑權、推流鑑權等安全保證。提供使用者及相關許可權管理配置。

相關資源路徑:

【官網】

【點播版本線上演示】

【直播版本線上演示】

【旗艦版本線上演示】

【線上介面】

這篇博文主要介紹如何利用軟體提供的介面快速接入開發。

一、 快速安裝

  1. 下載地址
  2. 下載對應環境的安裝包
  3. 解壓安裝包
  4. Windows下雙擊EasyDSS.exe直接啟動
  5. Linux下解壓目錄執行./start.sh

注:路徑中不能包含中文

二、 二次開發

二次開發中,方式是在自己業務系統後端登入介面中,呼叫流媒體的登入介面,獲取所需的sid或是token

1. 封閉內網使用

在業務使用,如果只是使用EasyDSS提供視訊分發能力,且不會對外公開介面埠10080(預設埠),可以直接將介面鑑權關閉,具體伺服器登入 http://localhost:10080 預設使用者名稱/密碼 admin/admin, 在 基礎配置 頁面,【介面鑑權】開關。

EasyDSS點播與直播伺服器軟體

2. 業務系統對接

2.1 cookie方式

注: HttpOnly = true 客戶端API(例如JavaScript)無法訪問僅限http的cookie。 此限制通過跨站點指令碼(XSS)消除了cookie被盜的威脅。

  1. 在後端業務程式碼中對接,如Java/PHP/Node.js 等
  2. 呼叫EasyDSS登入介面,介面呼叫成功後會在請求Headers的cookie中寫入sid
  3. 取出cookie裡的sid
  4. 其它介面呼叫時在請求頭cookies中傳遞sid
  5. Content-Type:application/x-www-form-urlencoded
  6. 介面請求路徑示例:http://localhost:10080/login

程式碼示例:Java

2.1.1 獲取sid

import java.io.DataOutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class GetLoginSid {
 public static void main(String[] args) throws Exception {
        URL url = new URL("http://demo.easydss.com:10080/login");
        
        //發起POST請求,並傳遞username,password引數(需要md5加密)
        HttpURLConnection conn = (HttpURLConnection)url.openConnection();
		conn.setDoOutput(true);
        conn.setDoInput(true);
        conn.setRequestMethod("POST");      
        conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); 
        DataOutputStream out = new DataOutputStream(conn.getOutputStream());  
        String content = "username=admin&password=21232f297a57a5a743894a0e4a801fc3";
        out.writeBytes(content); 
        out.flush();  
        out.close();
        
        
        Map<String, List<String>> headerFields = conn.getHeaderFields();
		
        Set<String> headerFieldsSet = headerFields.keySet();
		
        Iterator<String> hearerFieldsIter = headerFieldsSet.iterator();

        while (hearerFieldsIter.hasNext()) {

            String headerFieldKey = hearerFieldsIter.next();

            if ("Set-Cookie".equalsIgnoreCase(headerFieldKey)) {

                List<String> headerFieldValue = headerFields.get(headerFieldKey);

                for (String headerValue : headerFieldValue) {						
                    String[] fields = headerValue.split(";\\s*");
                    for (int j = 0; j < fields.length; j++) {
						if (fields[j].indexOf('=') > 0) {
                            String[] f = fields[j].split("=");
                            if ("Expires".equalsIgnoreCase(f[0])) {                        
                                 System.out.println("Expires:" + f[1]);
                            }
                            else if ("Max-Age".equalsIgnoreCase(f[0])) {                   
                                 System.out.println("Max-Age:" + f[1]);
                            }else if ("sid".equalsIgnoreCase(f[0])) {   //獲取sid     
                                 System.out.println("sid:" + f[1]);
                            }
                        }
                    }
                }
           }
        }
    }
   }

執行如下
EasyDSS點播與直播伺服器軟體

2.1.2 攜帶sid呼叫其它介面

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class RequestOtherAPI {

public static void main(String[] args) throws Exception {
        URL url = new URL("http://demo.easydss.com:10080/live/list");
        HttpURLConnection conn = (HttpURLConnection)url.openConnection();
		conn.setDoOutput(true);
        conn.setDoInput(true);
        conn.setRequestMethod("POST");      
        conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
		//這裡傳遞上一步獲得sid
        conn.setRequestProperty("Cookie","sid=s%3Ark-TEuVtm.WnWoXuDY%2FldJuEc64I6TXjd0Fq1eqByEd4ng1UwNb2I;"); 
        DataOutputStream out = new DataOutputStream(conn.getOutputStream());  
        String content = "start=0&limit=10";
        out.writeBytes(content); 
        out.flush();  
        out.close();
        
        conn.connect();
        StringBuffer sbf = new StringBuffer();
        InputStream is = conn.getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
        String strRead = null;
        while ((strRead = reader.readLine()) != null) {
            sbf.append(strRead);
            sbf.append("\r\n");
        }
        reader.close();
        System.out.println(sbf.toString());
    }
   }

執行如下
EasyDSS點播與直播伺服器軟體

2.2 token方式

  1. 呼叫登入介面獲取token
  2. Content-Type:application/x-www-form-urlencoded
  3. 其它介面呼叫時傳遞附加token入參

程式碼示例:Java

2.2.1 獲取token

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class GetLoginToken {

public static void main(String[] args) throws Exception {
        URL url = new URL("http://localhost:10080/login");
        HttpURLConnection conn = (HttpURLConnection)url.openConnection();
		conn.setDoOutput(true);
        conn.setDoInput(true);
        conn.setRequestMethod("POST");      
        conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
        DataOutputStream out = new DataOutputStream(conn.getOutputStream());  
        String content = "username=admin&password=21232f297a57a5a743894a0e4a801fc3";
        out.writeBytes(content); 
        out.flush();  
        out.close();
        
        conn.connect();
        StringBuffer sbf = new StringBuffer();
        InputStream is = conn.getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
        String strRead = null;
        while ((strRead = reader.readLine()) != null) {
            sbf.append(strRead);
            sbf.append("\r\n");
        }
        reader.close();
        System.out.println(sbf.toString());
    }
  }

執行如下
EasyDSS點播與直播伺服器軟體

2.2.2 攜帶token呼叫其它介面

其他介面呼叫時,附加token入參

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class RequestOtherAPIByToken {

public static void main(String[] args) throws Exception {
        URL url = new URL("http://localhost:10080/live/list");
        HttpURLConnection conn = (HttpURLConnection)url.openConnection();
		conn.setDoOutput(true);
        conn.setDoInput(true);
        conn.setRequestMethod("POST");      
        conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
        DataOutputStream out = new DataOutputStream(conn.getOutputStream());  
        String content = "start=0&limit=10&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1Mzc3NzExNTAsInB3IjoiMjEyMzJmMjk3YTU3YTVhNzQzODk0YTBlNGE4MDFmYzMiLCJ0bSI6MTUzNzY4NDc1MCwidW4iOiJhZG1pbiJ9.b1U-R-_HVKV9reWRD50327B1ztUqs3gowUGi_lDzlmU";
        out.writeBytes(content); 
        out.flush();  
        out.close();
        
        conn.connect();
        StringBuffer sbf = new StringBuffer();
        InputStream is = conn.getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
        String strRead = null;
        while ((strRead = reader.readLine()) != null) {
            sbf.append(strRead);
            sbf.append("\r\n");
        }
        reader.close();
        System.out.println(sbf.toString());
    }
 }

執行如下
EasyDSS點播與直播伺服器軟體

獲取更多資訊

QQ交流群:560148162

WEB:www.easydss.com

Copyright © EasyDSS.com 2012-2018