EasyDSS點播與直播伺服器軟體-二次開發介面對接說明示列
阿新 • • 發佈:2018-12-01
EasyDSS流媒體伺服器軟體,提供一站式的轉碼、點播、直播、時移回放服務,極大地簡化了開發和整合的工作。其中,點播版本主要包含:上傳、轉碼、分發。直播版本,主要包含:直播、錄影, 直播支援RTMP輸入,RTMP/HLS/HTTP-FLV的分發輸出;錄影支援自定義儲存時長、檢索及下載。提供豐富的二次開發介面,基於JSON的封裝及HTTP呼叫。提供播放鑑權、推流鑑權等安全保證。提供使用者及相關許可權管理配置。
相關資源路徑:
這篇博文主要介紹如何利用軟體提供的介面快速接入開發。
一、 快速安裝
- 下載地址
- 下載對應環境的安裝包
- 解壓安裝包
- Windows下雙擊EasyDSS.exe直接啟動
- Linux下解壓目錄執行./start.sh
注:路徑中不能包含中文
二、 二次開發
二次開發中,方式是在自己業務系統後端登入介面中,呼叫流媒體的登入介面,獲取所需的sid或是token
1. 封閉內網使用
在業務使用,如果只是使用EasyDSS提供視訊分發能力,且不會對外公開介面埠10080(預設埠),可以直接將介面鑑權關閉,具體伺服器登入 http://localhost:10080 預設使用者名稱/密碼 admin/admin, 在 基礎配置 頁面,【介面鑑權】開關。
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]);
}
}
}
}
}
}
}
}
執行如下
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());
}
}
執行如下
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());
}
}
執行如下
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());
}
}
執行如下
獲取更多資訊
QQ交流群:560148162
WEB:www.easydss.com
Copyright © EasyDSS.com 2012-2018