EasyDSS直播点播平台的水印功能开发后,有用户在使用过程中反馈,虽然水印生成速度是可见的,但是仍旧缓慢,一般情况下如果视频过大、时间过长的话,会导致水印视频的生成时间过长。
因为EasyDSS在生成水印的时候开启的是单线程,视频文件多时速度变慢是不可避免的,因此我们可以将单线程改为多线程。
代码中开启的是5个线程,将开启多线程的参数进行分拆添加到字符串数组里面,否则会导致命令不能识别,从而不起效果,出现报错的现象。
参考代码:
vodUrl := efile.FormatDirPath(getVodMp4(vod))
params = append(params, vodUrl, `-vf`)
srcDirPath, _, err := gVodDirDao.GetAbsolutePath(dirId)
url := fmt.Sprintf(`%s%s%s_watermark.mp4`, srcDirPath, "/", waterId)
//params = append(params, str, url)
params = append(params, str, "-threads", "5", "-preset", "ultrafast", url)
cmd := exec.Command(manager.EasyTrans(), params...)
关于EasyDSS的水印开发,大家如果有兴趣可以参考EasyDSS拓展多种格式的水印图片功能一文,当然更多的开发过程和经验我们都会通过博客和大家分享,大家可以关注我们。