EasyDSS相关功能

EasyDSS流媒体服务器软件,提供一站式的转码、点播、直播、时移回放服务,极大地简化了开发和集成的工作。其中,点播版本主要包含:上传、转码、分发。直播版本主要包含:直播、录像,直播支持RTMP输入,RTMP/HLS/HTTP-FLV的分发输出;录像支持自定义保存时长、检索及下载;提供丰富的二次开发接口、基于JSON的封装及HTTP调用;提供播放鉴权、推流鉴权等安全保证;提供用户及相关权限管理配置。

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

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
  1. import java.io.DataOutputStream;
  2. import java.net.HttpURLConnection;
  3. import java.net.URL;
  4. import java.util.Iterator;
  5. import java.util.List;
  6. import java.util.Map;
  7. import java.util.Set;
  8. public class GetLoginSid {
  9. public static void main(String[] args) throws Exception {
  10. URL url = new URL("http://demo.easydss.com:10080/login");
  11. //发起POST请求,并传递username,password参数(需要md5加密)
  12. HttpURLConnection conn = (HttpURLConnection)url.openConnection();
  13. conn.setDoOutput(true);
  14. conn.setDoInput(true);
  15. conn.setRequestMethod("POST");
  16. conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
  17. DataOutputStream out = new DataOutputStream(conn.getOutputStream());
  18. String content = "username=admin&password=21232f297a57a5a743894a0e4a801fc3";
  19. out.writeBytes(content);
  20. out.flush();
  21. out.close();
  22. Map<String, List<String>> headerFields = conn.getHeaderFields();
  23. Set<String> headerFieldsSet = headerFields.keySet();
  24. Iterator<String> hearerFieldsIter = headerFieldsSet.iterator();
  25. while (hearerFieldsIter.hasNext()) {
  26. String headerFieldKey = hearerFieldsIter.next();
  27. if ("Set-Cookie".equalsIgnoreCase(headerFieldKey)) {
  28. List<String> headerFieldValue = headerFields.get(headerFieldKey);
  29. for (String headerValue : headerFieldValue) {
  30. String[] fields = headerValue.split(";\\s*");
  31. for (int j = 0; j < fields.length; j++) {
  32. if (fields[j].indexOf('=') > 0) {
  33. String[] f = fields[j].split("=");
  34. if ("Expires".equalsIgnoreCase(f[0])) {
  35. System.out.println("Expires:" + f[1]);
  36. }
  37. else if ("Max-Age".equalsIgnoreCase(f[0])) {
  38. System.out.println("Max-Age:" + f[1]);
  39. }else if ("sid".equalsIgnoreCase(f[0])) { //获取sid
  40. System.out.println("sid:" + f[1]);
  41. }
  42. }
  43. }
  44. }
  45. }
  46. }
  47. }
  48. }
运行如下:

2.1.2 携带sid调用其它接口
  1. import java.io.BufferedReader;
  2. import java.io.DataOutputStream;
  3. import java.io.InputStream;
  4. import java.io.InputStreamReader;
  5. import java.net.HttpURLConnection;
  6. import java.net.URL;
  7. public class RequestOtherAPI {
  8. public static void main(String[] args) throws Exception {
  9. URL url = new URL("http://demo.easydss.com:10080/live/list");
  10. HttpURLConnection conn = (HttpURLConnection)url.openConnection();
  11. conn.setDoOutput(true);
  12. conn.setDoInput(true);
  13. conn.setRequestMethod("POST");
  14. conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
  15. //这里传递上一步获得sid
  16. conn.setRequestProperty("Cookie","sid=s%3Ark-TEuVtm.WnWoXuDY%2FldJuEc64I6TXjd0Fq1eqByEd4ng1UwNb2I;");
  17. DataOutputStream out = new DataOutputStream(conn.getOutputStream());
  18. String content = "start=0&limit=10";
  19. out.writeBytes(content);
  20. out.flush();
  21. out.close();
  22. conn.connect();
  23. StringBuffer sbf = new StringBuffer();
  24. InputStream is = conn.getInputStream();
  25. BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
  26. String strRead = null;
  27. while ((strRead = reader.readLine()) != null) {
  28. sbf.append(strRead);
  29. sbf.append("\r\n");
  30. }
  31. reader.close();
  32. System.out.println(sbf.toString());
  33. }
  34. }
运行如下

2.2 token方式

  • 调用登录接口获取token
  • Content-Type:application/x-www-form-urlencoded
  • 其它接口调用时传递附加token入参
代码示例:Java
2.2.1 获取token
  1. import java.io.BufferedReader;
  2. import java.io.DataOutputStream;
  3. import java.io.InputStream;
  4. import java.io.InputStreamReader;
  5. import java.net.HttpURLConnection;
  6. import java.net.URL;
  7. public class GetLoginToken {
  8. public static void main(String[] args) throws Exception {
  9. URL url = new URL("http://localhost:10080/login");
  10. HttpURLConnection conn = (HttpURLConnection)url.openConnection();
  11. conn.setDoOutput(true);
  12. conn.setDoInput(true);
  13. conn.setRequestMethod("POST");
  14. conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
  15. DataOutputStream out = new DataOutputStream(conn.getOutputStream());
  16. String content = "username=admin&password=21232f297a57a5a743894a0e4a801fc3";
  17. out.writeBytes(content);
  18. out.flush();
  19. out.close();
  20. conn.connect();
  21. StringBuffer sbf = new StringBuffer();
  22. InputStream is = conn.getInputStream();
  23. BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
  24. String strRead = null;
  25. while ((strRead = reader.readLine()) != null) {
  26. sbf.append(strRead);
  27. sbf.append("\r\n");
  28. }
  29. reader.close();
  30. System.out.println(sbf.toString());
  31. }
  32. }
运行如下:

2.2.2 携带token调用其它接口

其他接口调用时,附加token入参

  1. import java.io.BufferedReader;
  2. import java.io.DataOutputStream;
  3. import java.io.InputStream;
  4. import java.io.InputStreamReader;
  5. import java.net.HttpURLConnection;
  6. import java.net.URL;
  7. public class RequestOtherAPIByToken {
  8. public static void main(String[] args) throws Exception {
  9. URL url = new URL("http://localhost:10080/live/list");
  10. HttpURLConnection conn = (HttpURLConnection)url.openConnection();
  11. conn.setDoOutput(true);
  12. conn.setDoInput(true);
  13. conn.setRequestMethod("POST");
  14. conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
  15. DataOutputStream out = new DataOutputStream(conn.getOutputStream());
  16. String content = "start=0&limit=10&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1Mzc3NzExNTAsInB3IjoiMjEyMzJmMjk3YTU3YTVhNzQzODk0YTBlNGE4MDFmYzMiLCJ0bSI6MTUzNzY4NDc1MCwidW4iOiJhZG1pbiJ9.b1U-R-_HVKV9reWRD50327B1ztUqs3gowUGi_lDzlmU";
  17. out.writeBytes(content);
  18. out.flush();
  19. out.close();
  20. conn.connect();
  21. StringBuffer sbf = new StringBuffer();
  22. InputStream is = conn.getInputStream();
  23. BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
  24. String strRead = null;
  25. while ((strRead = reader.readLine()) != null) {
  26. sbf.append(strRead);
  27. sbf.append("\r\n");
  28. }
  29. reader.close();
  30. System.out.println(sbf.toString());
  31. }
  32. }
运行如下

关于EasyDSS

EasyDSS(http://www.easydss.com)流媒体解决方案采用业界优秀的流媒体框架模式设计,服务运行轻量、高效、稳定、可靠、易维护,支持RTMP直播、RTMP推送、HTTP点播、HTTP-FLV直播、HLS直播,并支持关键帧缓冲,画面秒开等多种特性,能够接入Web、Android、iOS、H5、微信等全平台客户端,是移动互联网时代贴近企业点播/直播需求的一款接地气的流媒体服务器,配套OBS、EasyRTMP等直播推流工具以及EasyPlayer等网络播放器,可以形成一套完整的视频直播、录播解决方案,满足用户在各种行业场景的流媒体业务需求。

EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器软件二次开发接口对接说明示列的更多相关文章

  1. EasyDSS点播与直播服务器软件-二次开发接口对接说明示列

    EasyDSS流媒体服务器软件,提供一站式的转码.点播.直播.时移回放服务,极大地简化了开发和集成的工作.其中,点播版本主要包含:上传.转码.分发.直播版本,主要包含:直播.录像, 直播支持RTMP输 ...

  2. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器软件实现的多码率视频点播功能说明

    关于EasyDSS EasyDSS(http://www.easydss.com)流媒体解决方案采用业界优秀的流媒体框架模式设计,服务运行轻量.高效.稳定.可靠.易维护,支持RTMP直播.RTMP推送 ...

  3. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器软件正式环境安装部署攻略

    背景介绍 EasyDSS流媒体服务器软件,提供一站式的转码.点播.直播.时移回放服务,极大地简化了开发和集成的工作.其中,点播功能主要包含:上传.转码.分发.直播功能,主要包含:直播.录像, 直播支持 ...

  4. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器软件对数据库Sqlite3和MySQL的支持说明

    背景分析 EasyDSS商用流媒体服务器提供一站式的转码.点播.直播.时移回放服务,极大地简化了开发和集成的工作,并且EasyDSS支持多种特性,完全能够满足企业视频信息化建设方面的需求.其中,点播功 ...

  5. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器解决方案之Nodejs调用bat或sh脚本

    关于EasyDSS流媒体服务器 EasyDSS商用流媒体服务器解决方案是一套集流媒体点播.转码与管理.直播.录像.检索.时移回看于一体的一套完整的商用流媒体服务器解决方案,EasyDSS高性能RTMP ...

  6. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器前端源码重构(六)- webpack-dev-server 自适应支持手机端访问

    关于EasyDSS EasyDSS商用流媒体服务器解决方案是一套集流媒体点播.转码与管理.直播.录像.检索.时移回看于一体的一套完整的商用流媒体服务器解决方案,EasyDSS高性能RTMP流媒体服务器 ...

  7. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器启用https服务申请免费证书

    背景分析 目前想在 web 上使用 HTTPS 的话, 你需要获得一个证书文件, 该证书由一个受浏览器信任的公司所签署. 一旦你获得了它, 你就在你的 web 服务器上指定其所在的位置, 以及与你关联 ...

  8. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器功能简介---视频直播、直播鉴权(如何完美将EasyDSS过渡到新版)

    作为RTMP流媒体服务器,接受RTMP推流.进行实时的直播流分发是EasyDSS流媒体服务自身一大核心功能.写本篇博文的一个目的是向大家介绍EasyDSS新版的直播间.匿名直播.和虚拟直播的功能, 另 ...

  9. 使用ffmpeg -re循环推流(循环读取视频文件)推送EasyDSS RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器的方法

    需求分析 众所周知,EasyDSS与EasyNVR最大的区别是,EasyDSS被动接受前端设备的推流,将推送过来的直播流进行直播转码.智能处理.视频分发,在通过CDN分发节点分发到终端播放SDK.而E ...

随机推荐

  1. 逆向破解之160个CrackMe —— 020

    CrackMe —— 020 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...

  2. error: ‘Poco::UInt16’ has not been declared

    碰到Poco库和其他第三方库共用的时候,当include-POCO库的头文件的时候,此时也include-其他库,导致这个报错. 原因是在这两个库中都对 UINT16 定义,导致冲突. 可以把这两个库 ...

  3. 闲谈关于discuz内核缓存机制

    Discuz! 缓存 Discuz! X2.5 的 config_global.php 中有这样一行代码 $_config['cache']['type'] = 'sql'; 这就是 Discuz! ...

  4. Python基础知识笔记-作用域

    Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的. 变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称.Python的作用域一共有4种,分别是: ...

  5. spring mvc @RequestMapping method 不写的话,默认GET、POST都支持,根据前端方式自动适应

    @RequestMapping(value="/") method 不写的话,默认GET.POST都支持,根据前端方式自动适应.

  6. 牛客NOIP暑期七天营-提高组6C:分班问题 (组合数)

    题意:A班有N个人,B班有M个人,现在要组成一个新的班级C班,为了公平,从AB班各抽相同人数的人. 现在求所有方案中,人数之和是多少. 思路:即求Σ k*C(N,k)*C(M,k);    先忽略这个 ...

  7. ie6下标签定义的高失效,显示的高不受设定的height值影响

    今天又碰到一个奇葩的ie6兼容bug,忍不住抱怨下这个后妈生的鬼东西!! 看图这个是在非ie6下的浏览器效果

  8. UI系统的核心在于渲染机制:效率与生命--原生渲染为何比webview渲染快?

    作者:谷宝剑链接:https://www.zhihu.com/question/264592475/answer/283852178来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...

  9. Trolley slow

  10. Xamarin.Forms之样式

    使用XAML样式设置Xamarin.Forms应用的样式Xamarin.Forms应用程序的样式传统上是通过使用Style类将一组属性值分组到一个对象中来完成的,然后可以将其应用于多个视觉元素实例. ...