精华内容
下载资源
问答
  • EasyDSS流媒体服务器软件,提供一站式的转码、点播、直播、时移回放服务,极大地简化了开发和集成的工作。 其中,点播功能主要包含:上传、转码、分发。直播功能,主要包含:直播、录像, 直播支持RTMP输入,RTMP/...

    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

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

    EasyDSS流媒体服务器软件,提供一站式的转码、点播、直播、时移回放服务,极大地简化了开发和集成的工作。

    其中,点播功能主要包含:上传、转码、分发。直播功能主要包含:直播、录像, 直播支持RTMP输入,RTMP/HLS/HTTP-FLV的分发输出;录像支持自定义保存时长、检索及下载。提供丰富的二次开发接口,基于JSON的封装及HTTP调用。提供播放鉴权、推流鉴权等安全保证。提供用户及相关权限管理配置。

    本篇文章主要介绍,在正式的部署环境中,如何优化部署策略,方便后期的版本升级及数据维护。

    一、默认存储配置说明

    默认的存储模型

    默认的存储模型

    二、正式部署建议

    在正式部署当中,最好将业务数据存储和视频图像的存储分开,具体原理如下,这样操作后,系统再今后的版本升级和数据维护方面更加方便。
    在这里插入图片描述

    正式部署配置建议
    具体示例配置如下

    解压安装目录下的 easydss.ini文件中

    ......
    ; 存储路径配置,默认配置的是相对路径,相对于解压目录。 也可以配置绝对路径 如:D:/data  或 /root/data
    [dir]
    ; Sqlite3数据库文件路径
    dir_data = /diskb/data/db
    ; 点播存储路径
    dir_vod  = /diskc/data/vod
    ; 快照存储路径
    dir_snap = /diskc/data/snap
    ; 直播录像存储路径
    dir_hls = /diskc/data/hls
    ; 虚拟直播存储路径
    dir_vhls = /diskc/data/vhls
    ; 缓存存储路径
    dir_cache = /diskc/data/cache
    ; 日志存储路径
    dir_logs = /diskb/data/logs
    ......
    

    三、EasyDSS流媒体服务搭建资源

    官方网站
    点播版本在线演示
    直播版本在线演示
    旗舰版本在线演示
    在线接口
     

    四、联系我们

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

    展开全文
  • EasyDSS是TSINGSEE青犀视频团队很早就研发的一款支持RTMP协议的视频流媒体平台,在近两年优化更新后,其功能进一步发展,已经是一款完善且稳定的RTMP视频平台,在很多视频监控项目中都提供了视频能力。 上一篇...

    EasyDSS是TSINGSEE青犀视频团队很早就研发的一款支持RTMP协议的视频流媒体平台,在近两年优化更新后,其功能进一步发展,已经是一款完善且稳定的RTMP视频平台,在很多视频监控项目中都提供了视频能力。

    场景方案.png

    上一篇我们讲了EasyDSS的虚拟直播推流,需要对虚拟直播分享的用户肯定会对分享的方式有需求。EasyDSS的虚拟直播可以通过二维码分享,也可以通过链接地址分享。

    虚拟直播.png

    如果通过链接地址的方式分享,按理来说地址直接在网页就可以访问,但实际测试该地址却显示无信号,无法播放视频。

    18.png

    我们打开页面的开发者模式可以看到,请求的接口中没有播放地址,所以页面中出现无信号的情况。

    122.png

    我们编译的代码逻辑是如果要将视频资源推送到直播间,则需要查询直播间的播放数据,代码在该处会判断是否将视频资源推送到直播间,如果是的话,将主键id传入,查询到对应的数据以及播放地址就会正常播放,如果不是,则查询不到对应的播放地址,则显示无信号。

    vlive := dao.TVlive{}
    dao.GetDB().First(&vlive, consts.SqlWhereID, id)
    if vlive.ID != consts.EmptyString && vlive.Shared {
       if cdn.IsNeedPushCdn(ptype) {
          session = cdn.Start(id)
       } else {
          if vlive.Target != consts.EmptyString {
             session = *dss.GetLiveSessionInfoByHost(vlive.Target, host, token)
          } else {
             session = *dss.GetLiveSessionInfoByHost(id, host, token)
          }
       }
       c.AbortWithStatusJSON(http.StatusOK, NewVLiveRowWithSession(c, vlive, &session))
       return
    }
    

    因此我们要修改代码,获取对应的播放数据和地址,视频则可以正常播放。

    19.png

    关于EasyDSS的更多内容,大家可以关注我们博客了解,当然EasyDSS也支持测试,欢迎大家测试。

    展开全文
  • 今年年初的时候,我给大家介绍了课堂推流的方案:EasyDSS轻松开启线上视频学习平台,那么本文我就来跟大家讲一个案例,大家可以把案例和方案结合起来一起了解一下。 EasyDSS+OBS实现在线课堂 大家

    暑假已经到了,我身边的朋友很多都在给孩子报暑期培训课,其内容形式也非常多,有趁着暑期补习的,也有培养兴趣爱好的,有报班集体上课的,也有视频教学一对多的,这个视频教学还是挺吸引我的。确实,今年以来,我们都能明显的感觉到视频教学在教育资源中占的分量之重,这也代表着线上课堂的教育模式正在被推动并且往前发展。

    今年年初的时候,我给大家介绍了课堂推流的方案:EasyDSS轻松开启线上视频学习平台,那么本文我就来跟大家讲一个案例,大家可以把案例和方案结合起来一起了解一下。

    EasyDSS+OBS实现在线课堂

    大家知道很多学校由于疫情原因,都耽误了不少课程,近期有个私立学校找到我们,也是由于疫情,让很多学生的课都落下了不少,因此想通过远程课堂的方式来进行补课,让学生跟上进度,来咨询我们是否有相应的方案来建立这套远程课堂系统。

    在我们和校方沟通之中了解到,学校的网络环境还是不错的,有千兆公网,带宽相对充足,因此我们这边建议用OBS+EasyDSS的方案来实现。

    4.png

    在电脑上安装OBS软件,并接入高清摄像头和MIC,将摄像头的视频流和老师声音推流到EasyDSS系统上,有EasyDSS转码生成课堂视频链接,嵌入学校在线教育网页上,学生通过访问相关网页,可以获取老师的在线课堂视频。

    关于OBS推流的使用方法,之前也给大家做过介绍,如果有不了解的朋友,可以按照此文来进行配置:如何使用OBS推流平台进行转推?

    通过摄像机、电脑摄像头、网络摄像机及其他设备采集到现场画面,再通过编码器或编码软件推送到EasyDSS直播服务器分发、高清转码,学员只需在家即可通过PC、手机、平板电脑等多种终端实时观看课堂直播内容。

    DSS14.png

    展开全文
  • EasyDSS流媒体服务器软件,提供一站式的转码、点播、直播、时移回放服务,极大地简化了开发和集成的工作。   其中,点播功能主要包含:上传、转码、分发。直播功能主要包含:直播、录像, 直播支持RTMP输入,...
  • 在实际的视频直播推流项目中,我们经常会遇到一些现场网络比较特殊的情况,比如内网和外网...此处需要用到一个推流平台,本文我们以EasyDSS视频推流平台来举例。 1)首先需要一台能够访问到公网的服务器,公网可以无法
  • 大家知道我们的视频直播点播平台EasyDSS已经升级了新版本,如果还有使用旧版本的用户可以尽快对版本进行升级,旧的版本目前在一些新功能上是不能兼容的,偶尔会出现报错信息,对使用造成一定的阻碍。 这几天就有...
  • 在本文的景区直播方案中,我们采取了“VR相机+EasyDSS”结合方案,其中前端使用的IPC是青犀视频和海康威视定制研发的RTMP推流摄像机,IPC支持RTMP协议流直接推送,后期该监控设备还将扩展VR功能,便于更多业务场景...
  • 这两款摄像头上线以来,有很多曾经使用过我们的流媒体服务器的用户都来咨询,并且对摄像头的推流过程比较感兴趣,所以本文我们就来讲一下这两款推流摄像头是怎么接入流媒体平台的,本文以EasyDSS视频直播点播平台为...
  • 之前我们分享过EasyDSS多路项目合成的过程,在功能测试期间,我们完成了对视频卡顿、音频采样等问题做了比较全面的修复,如今该功能已经基本测试完毕,本文再分享一个我们测试期间碰到的问题。 EasyDSS项目现场多路...
  • 随后我们也将逐步研发可以管理其他平台的EasyNVS,目前正在测试的就是管理EasyDSS的EasyNVS版本。 为了实现集中管理EasyDSS,新创建了一个集中管理的产品EasyNVS。可以通过EasyNVS去管理底下多个EasyDSS,实现对...
  • 近期我们在对EasyDSS视频平台进行新的内核改版,比如上一篇文中我们分享了推流计划配置的实现过程,同样在其他方面也进行了一些大大小小的更新。此外,更换了EasyDSS的内核之后,EasyDSS的性能相较之前也有很大提升...
  • 软件的高可用性是指软件的不间断运行能力,它一方面要求软件所依赖的设备本身具有高可靠性,另一方面必须从软件的设计入手,其主要技术指标是存储切换功能,数据复制功能,数据快照功能等。...EasyDSS
  • 本文讲的是视频直播点播平台EasyDSS中的延迟现象。有用户反应在视频直播点播流媒体服务器里面HLS播放延迟较大,有点影响观感。 这里我们首先推荐的是通过调整切片时间来减少延迟,理论延迟在30s左右(系
  • 我们常见的视频流接入协议包括RTSP协议、RTMP协议、GB28181协议三种,针对这三种协议,TSINGSEE青犀视频研发了不同的视频解决方案,其中EasyDSS是支持推流协议RTMP接入的平台,它与其他平台不同的点在于EasyDSS可...
  • 在EasyNVR、EasyGBS、EasyDSS这一类视频平台中,经常会碰到用户问我们跨域相关的问题。在视频流的传输上,某些项目需要将视频流嵌入第三方平台或者app进行直播,这时极大可能会产生跨域相关的问题,这并不是传输上的...
  • EasyDSS具有电视直播、现场直播、时移电视、即刻回看和视频点播功能,适合OTT TV、IPTV、互联网教育、视频聊天、现场直播和VOD等应用。并且EasyDSS支持多种特性,完全能够满足企业视频信息化建设方面的需求。 在...
  • 我们近期定制了一批海康的RTMP推流摄像头,因此有不少用户向我们咨询这种RTMP摄像头是如何使用的,本文我们以EasyDSS流媒体服务器为例,来简单讲一下我们定制的RTMP推流摄像头是如何接入流媒体平台的。 首先确认...
  • TSINGSEE团队研发的视频平台有很多种,而EasyDSS平台不同于其他平台的地方在于不仅能够进行视频直播,还能进行视频点播,能够上传视频文件,根据用户的需求将点播文件转化为直播。EasyDSS能够接入支持RTMP协议的...
  • 之前我们更新了EasyDSS的部分功能,包括添加了EasyDSS的水印功能,水印功能的开发可以参考以下内容:EasyDSS新增生成水印模块记录。 在TSINGSEE青犀视频团队接到的其中一个项目当中,用户跟我们反馈水印的使用...
  • 在线教育课堂直播点播平台EasyDSS服务默认是可以通过分享链接随时随地在Web分享播放,不限制用户的登陆与否。只需通过连接,外网或者非登录用户均可直接观看视频。但是有的项目要求用户必须登录才能自由浏览分享链接...
  • 开发EasyDSS的初衷 自从12年开始做EasyDarwin的时候,当时眼光一直都仅仅局限在安防监控视频这一块,对RTMP没有太大的重视,对于后起之秀HLS更是没有太多关注,然而经历了15直播火热的发展,RTMP、HLS、H5直播已经...
  • EasyDSS的加密狗授权,主要读取到授权时间、允许直播的最大数量,然后EasyDSS服务就会在授权时间内正常使用,直播数量也限制在设置范围。程序会定时一分钟读取一次加密狗是否插入机器,如果没有则按默认授权信息处理...
  • 为保障流媒体服务器正常稳定运作,EasyDSS有专业的运维(售前支撑、商务咨询、售后维护)团队,随时对客户各种突发情况快速响应处理,保证互联网直播的顺利进行。
  • 代码在这里: easydss-web-src , 我为第一篇博客建立了单独的分支 blog_1 , 并且我打算后面的系列都这样, 建立一个单独分支. 为什么要提取共用文件 我们已经创建了两个静态页面: index.html 和 about.html, 对应的...
  • 我们常说EasyDSS平台的点播功能是一项在教育、医疗方面都具备一定优势的功能,支持自行上传视频文件,但在EasyDSS点播上,接口的调用还是有部分问题需要大家注意。鉴于在postman上面调用上传点播文件接口的用户比较...
  • 最近有个用户现场使用的是EasyDSS,播放也是一直黑屏,要等很久才能播放,有的甚至不能播放: 这种情况一般可能是关键帧没有加载过来导致的,我们可以到后台的配置里面看一下,截图如下: 页面上显示FPS(视频...
  • 本文我们还讲一下Go 语言开发出现的其他问题,我们的编译人员使用Go语言编译EasyDSS时,出现“collect2.exe: error: ld returned 1 exit status”报错。 在开发过程中,升级 Go 版本后,编译代码出现一堆mingw
  • EasyDSS互联网视频云服务是一套集点播、转码、管理、直播、录像、检索、实时回看于一体,能够对接海康RTMP推流摄像头及市面上的RTMP专用推流摄像头及设备,将RTMP视频流直接实现网页无插件直播或者点播。 有用户...
  • EasyDSS作为TSINGSEE青犀视频开发的RTMP协议视频直播点播平台,在这两年的居家办公及在线课堂方面都体现了其远程交互的价值。EasyDSS集转码、上传一体化的设计,使音视频资源转码后可立即面向互联网进行发布,分享更...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,748
精华内容 699
关键字:

easydss