zoukankan      html  css  js  c++  java
  • 【开发记录】RTMP推流协议互联网直播点播平台EasyDSS新增生成水印模块记录

    TSINGSEE青犀视频云边端架构全线产品发展到现在,除了对视频播放及很多实用的功能做了改进和优化之外,也增添了不少细节方面的完整度。

    比如在EasyDSS视频平台内,有用户担心自己的直播视频被盗用,或者需要展示自己的品牌,就需要在视频上增加水印。因此我们在新版本的EasyDSS内增加了水印模块,在近期就会上线,供大家测试。

    为了让EasyDSS水印的生成效率比较直观,我们在开发水印功能的时候同时开发了模块中显示水印生成进度的功能。一开始用户给视频添加水印后,页面中的生成按钮一直在转动,这表示正在生成水印,而用户无法识别水印是否在生成,或者水印的进度。

    在生成水印的时候,由于每一次的原视频大小都是不一样的,所以给视频添加水印的速度也是不一样的。因此如果原视频文件很大,在添加水印的时候就会很慢,当添加成功之后,页面中不能显示对应的水印视频信息。导致用户没法判断水印是否生成。

    因此我们又设计了一套代码,在系统对视频添加水印的时候,读取转码时的详细信息,通过正则表达式进行匹配,匹配生成到视频的时间段,再和原视频的总时长进行对比,获取进度。

    参考代码:

    reg := regexp.MustCompile(`frame=.+s+time=(.+?)s+`)
    for {
       if line, err := reader.ReadString('
    '); err != nil {
    
          if conf2.Debug {
             log.Println("read line err", err)
          }
    
          if err == io.EOF {
             gWatersProgress.Set(waterId+"_watermark", 100)
          }
          break
       } else {
          matchs := reg.FindStringSubmatch(line)
          if matchs != nil && vod.Duration != 0 {
             progress := float64(manager.TimeSeconds(matchs[1])) / float64(vod.Duration) * 100
             gWatersProgress.Set(waterId+"_watermark", int(math.Floor(progress)))
          }
       }
    }
    cmd.Wait()
    
    

    EasyDSS视频平台的功能趋于完善是我们一直追求的成果,在将来,我们还会对EasyGBS、EasyNVR等进行更加全面的开发,做到适应H265编码、适应AI智能分析等功能,引领行业技术走上新征途。如果大家仍对EasyDSS感兴趣,欢迎联系我们获取测试账号进行测试。

  • 相关阅读:
    一些博弈
    中国剩余定理分析及扩展
    2018年全国多校算法寒假训练营练习比赛(第三场)
    数论——逆元
    扩展欧几里得
    算法思维题
    匈牙利算法
    Codeforces #449 div2 C题
    16级C程序设计竞赛C题
    动态规划--模板--hdu 1059 Dividing
  • 原文地址:https://www.cnblogs.com/easydss/p/14139805.html
Copyright © 2011-2022 走看看