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, 在 基础配置 页面,【接口鉴权】开关。

接口鉴权开关

接口鉴权开关
   

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]);
                            }
                       }
                    }
                }
          }
        }
    }
  }

运行如下
在这里插入图片描述

获取sid运行结果

 

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方式

  1. 调用登录接口获取token,调用时传递 onlytoken=true
    如: http://demo.easydss.com:10080/login?username=admin&password=21232f29757a5a&onlytoken=true
  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());
    }
  }

运行如下
在这里插入图片描述

获取token运行结果

 

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());
    }
}

运行如下

在这里插入图片描述

携带token调用其他接口结果

 

联系我们

【产品咨询】:18855116161/18855116363
【商务咨询】:18855116565/18855116262
【邮    件】:support@easydss.com

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值