zoukankan      html  css  js  c++  java
  • RTMP协议Web直播点播系统EasyDSS视频平台解决无法获取指定时间快照问题

    TSINGSEE青犀视频开发的网页无插件视频直播点播平台EasyDSS为了便于大家的二次开发,提供了很多接口供大家调用,其中web界面快照的获取就是采用了快照接口的调用。

    年前的时候TSINGSEE青犀视频团队遇到一个项目,在获取快照时,部分视频默认截取视最开始的视频快照,导致很多快照显示的是黑屏,因此该项目需要获取指定时间的快照图片作为视频的背景图。

    我们在编写接口时,规则就是获取默认快照图片,而无法获取指定时间的快照图片。原因是代码将获取指定时间的图片操作屏蔽了,代码无法执行,因此该逻辑实际是有问题的。

    我们对接口重新进行编写,传入获取视频中第多少秒的视频图片参数,并对对应的ts文件进行截取,获取图片。参考代码如下:

    //解析获取最初的ts
    data := efile.ReadFile(periodPath)
    reg, _ := regexp.Compile("#EXTINF:" + `.*,`)
    regTs, _ := regexp.Compile(ID + `-.*.ts`)
    ts := ""
    insTime := 0
    //最低一秒一个ts,一个小时为3600秒
    timeS := reg.FindAllString(data, 4000)
    if len(timeS) == 0 {
       c.AbortWithStatusJSON(http.StatusNotFound, consts.MsgErrorNotFound)
       return
    }
    for i := 0; i < len(timeS); i++ {
       time := strings.Split(strings.Split(timeS[i], ":")[1], ".")[0]
       timeInt, _ := strconv.Atoi(time)
       if second-timeInt <= 0 {
          insTime = second
          ts = filepath.Join(recordPath, ID, period[:8], period, regTs.FindAllString(data, 4000)[i+1])
          break
       }
       second = second - timeInt
    }
    filepath.Join(recordPath, ID, period[:8], period, reg.FindString(data))
    snapTs(c, ts, strconv.Itoa(insTime), resolutionW, resolutionH, snapPath)
    
    

    如果大家需要调用其他接口,可以参考TSINGSEE青犀视频EasyDSS平台官方提供的API文档:http://demo.easydss.com:10080/apidoc/。当然了,EasyDSS也支持大家实际部署测试,欢迎大家随时了解更多详细内容。

  • 相关阅读:
    诸葛马前课andoid app 应用
    C#读写文件总结
    C#写的较完美验证码通用类
    利用C#转换图片格式及转换为ico
    集合&gt;哈希表类Hashtable和SortedList排序列表类
    C# 4.0 新特性dynamic、可选参数、命名参数等
    String.Format格式说明
    C# 4动态编程新特性与DLR剖析
    C#中const和readonly的区别
    2014年7月阅读链接
  • 原文地址:https://www.cnblogs.com/easydss/p/14412458.html
Copyright © 2011-2022 走看看