// 获取音频时长,结果为秒 func GetWavDuration(filePath string) float64 { // 格式转换 ffmpeg -i xxxx 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,// cmd := fmt.Sprintf("ffmpeg -i %s 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//", filePath) command := exec.Command("/bin/bash", "-c", cmd) res, err := command.CombinedOutput() log.Infof("执行命令: %v, %s", cmd, string(res)) if err != nil { log.Error("获取时长异常", filePath) return 0 } body := string(res) if !strings.Contains(body, constant.StringColo) { return 0 } timeArr := strings.Split(body, constant.StringColo) if len(timeArr) != 3 { return 0 } // 计算时长,转为秒 hour, err := strconv.ParseFloat(timeArr[0], 32) if err != nil { return 0 } min, err := strconv.ParseFloat(timeArr[1], 32) if err != nil { return 0 } second, err := strconv.ParseFloat(timeArr[2], 32) if err != nil { return 0 } return 3600*hour + 60*min + second }