EasyDSS开发视频点播倍速播放的过程(附部分代码)

大家知道很多视频点播平台都是具备倍速播放功能的,在我们EasyDSS平台中,也有项目团队提出需求,需要根据用户参数可自行修改视频播放速度。

课堂点播.png

对于该需求的实现,我们首先要根据请求的视频倍数,重新生成hash文件名,否则会出现文件名覆盖的情况。其次,在生成源视频文件后制作一个元素率的视频备份。最后将源文件删除,将备份文件作为源,生成源文件名的加速文件。

部分参考代码如下:

func CreateSpeedFile(path, input string, speed float32) string {
	var shellFile string
	switch runtime.GOOS {
	case "windows":
		shellFile = "change_speed.bat"
		f, _ := os.Create(shellFile)
		inputPath := filepath.Join(path, fmt.Sprintf("%s", input))
		outPath := filepath.Join(path, "temp.mp4")
		f.Write([]byte(fmt.Sprintf("copy %s %s\n", inputPath, outPath)))
		f.Write([]byte(fmt.Sprintf("del %s\n", inputPath)))
		f.Write([]byte(fmt.Sprintf("%s -i %s", EasyTrans(), outPath)))
		f.Write([]byte(fmt.Sprintf(" -filter_complex \"[0:v]setpts=%f*PTS[v];[0:a]atempo=%f[a]\"", 1/speed, speed)))
		f.Write([]byte(fmt.Sprintf(" -map \"[v]\" -map \"[a]\" %s\n", inputPath)))
		f.Write([]byte(fmt.Sprintf("del %s\n", outPath)))
		f.Close()
	case "linux":
		inputPath := estring.FormatPath(filepath.Join(path, fmt.Sprintf("%s", input)))
		outPath := estring.FormatPath(filepath.Join(path, "temp.mp4"))
		cmd := exec.Command("/bin/bash","-c",fmt.Sprintf("cp %s %s\n", inputPath, outPath))
		err := cmd.Run()
		if err!=nil{
			return ""
		}
		cmd = exec.Command("/bin/bash","-c",fmt.Sprintf("rm %s\n", inputPath))
		err = cmd.Run()
		if err!=nil{
			return ""
		}
		sh := fmt.Sprintf("%s -i %s -filter_complex \"[0:v]setpts=%f*PTS[v];[0:a]atempo=%f[a]\" -map \"[v]\" -map \"[a]\" %s\n",EasyTrans(), outPath, 1/speed, speed,inputPath)
		cmd = exec.Command("/bin/bash","-c",sh)
		err = cmd.Run()
		if err!=nil{
			return ""
		}
		cmd = exec.Command("/bin/bash","-c",fmt.Sprintf("rm %s\n", outPath))
		err = cmd.Run()
		if err!=nil{
			return ""
		}
	}
	return shellFile
}

EasyDSS开发简单,我们给客户提供了编程语言无关化的RESTfulAPI接口,可以很简单的进行二次开发和应用,并且各模块间无缝对接,亦可将EasyDSS流媒体服务器软件与其他第三方平台对接,组合灵活自由,这也是众多用户选择我们的重要原因之一。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值