EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒體服務器軟件二次開發接口對接說明示列

EasyDSS相關功能

EasyDSS流媒體服務器軟件,提供一站式的轉碼、點播、直播、時移回放服務,極大地簡化了開發和集成的工作。其中,點播版本主要包含:上傳、轉碼、分發。直播版本主要包含:直播、錄像,直播支持RTMP輸入,RTMP/HLS/HTTP-FLV的分發輸出;錄像支持自定義保存時長、檢索及下載;提供豐富的二次開發接口、基於JSON的封裝及HTTP調用;提供播放鑑權、推流鑑權等安全保證;提供用戶及相關權限管理配置。

EasyDSS

EasyDSS流媒體服務搭建資源

【官網】

【點播版本在線演示】

【直播版本在線演示】

【旗艦版本在線演示】

【在線接口】

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

一、 快速安裝

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

注:路徑中不能包含中文

二、 二次開發

二次開發中,方式是在自己業務系統後端登錄接口中,調用流媒體的登錄接口,獲取所需的sid或是token

1.封閉內網使用

在業務使用,如果只是使用EasyDSS提供視頻分發能力,且不會對外公開接口端口10080(默認端口),可以直接將接口鑑權關閉,具體服務器登錄 http://demo.easydss.com:10080/login.html 默認用戶名/密碼 admin/admin, 在基礎配置頁面,【接口鑑權】開關。

EasyDSS

2.業務系統對接

2.1 cookie方式

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

  • 在後端業務代碼中對接,如Java/PHP/Node.js 等
  • 調用EasyDSS登錄接口,接口調用成功後會在請求Headers的cookie中寫入sid
  • 取出cookie裏的sid
  • 其它接口調用時在請求頭cookies中傳遞sid
  • Content-Type:application/x-www-form-urlencoded
  • 接口請求路徑示例: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方式

  • 調用登錄接口獲取token
  • Content-Type:application/x-www-form-urlencoded
  • 其它接口調用時傳遞附加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運行

關於EasyDSS

EasyDSS(http://www.easydss.com)流媒體解決方案採用業界優秀的流媒體框架模式設計,服務運行輕量、高效、穩定、可靠、易維護,支持RTMP直播、RTMP推送、HTTP點播、HTTP-FLV直播、HLS直播,並支持關鍵幀緩衝,畫面秒開等多種特性,能夠接入Web、Android、iOS、H5、微信等全平臺客戶端,是移動互聯網時代貼近企業點播/直播需求的一款接地氣的流媒體服務器,配套OBS、EasyRTMP等直播推流工具以及EasyPlayer等網絡播放器,可以形成一套完整的視頻直播、錄播解決方案,滿足用戶在各種行業場景的流媒體業務需求。

EasyDSS

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章