|
@@ -41,7 +41,7 @@ func AutoTranscoder(ctx *svc.ServiceContext) {
|
|
|
continue
|
|
continue
|
|
|
}
|
|
}
|
|
|
//业务处理
|
|
//业务处理
|
|
|
- resp, err := transcoder(ctx, &req.CallbackRequest)
|
|
|
|
|
|
|
+ resp, err := Transcoder(ctx, &req.CallbackRequest)
|
|
|
logx.Info("转码结果 data:", resp, err)
|
|
logx.Info("转码结果 data:", resp, err)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
logx.Error(err)
|
|
logx.Error(err)
|
|
@@ -72,11 +72,15 @@ func AutoTranscoder(ctx *svc.ServiceContext) {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func transcoder(svcCtx *svc.ServiceContext, req *types.CallbackRequest) (resp *types.OriginDataResponse, err error) {
|
|
|
|
|
|
|
+// Transcoder 转码
|
|
|
|
|
+func Transcoder(svcCtx *svc.ServiceContext, req *types.CallbackRequest) (resp *types.OriginDataResponse, err error) {
|
|
|
if req.Path == "" {
|
|
if req.Path == "" {
|
|
|
err = StopTranscoderError
|
|
err = StopTranscoderError
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
+ // 去除空格
|
|
|
|
|
+ req.Path = strings.TrimSpace(req.Path)
|
|
|
|
|
+ req.CallbackUrl = strings.TrimSpace(req.CallbackUrl)
|
|
|
resp = &types.OriginDataResponse{OriginData: req.OriginData}
|
|
resp = &types.OriginDataResponse{OriginData: req.OriginData}
|
|
|
// 发起HTTP GET请求
|
|
// 发起HTTP GET请求
|
|
|
resp1, err := http.Get(req.Path)
|
|
resp1, err := http.Get(req.Path)
|
|
@@ -91,39 +95,46 @@ func transcoder(svcCtx *svc.ServiceContext, req *types.CallbackRequest) (resp *t
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
// 读取响应体内容
|
|
// 读取响应体内容
|
|
|
- silkPath := uuid.NewString() + ".silk" // 本地保存的文件路径
|
|
|
|
|
- silkFile, err := os.Create(silkPath)
|
|
|
|
|
|
|
+ inputPath := uuid.NewString() // 本地保存的文件路径
|
|
|
|
|
+ inputFile, err := os.Create(inputPath)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- logx.Errorf("读取silk文件失败 error:", err.Error())
|
|
|
|
|
|
|
+ logx.Errorf("读取文件失败 error:", err.Error())
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
- _, err = io.Copy(silkFile, resp1.Body)
|
|
|
|
|
- silkFile.Close()
|
|
|
|
|
|
|
+ _, err = io.Copy(inputFile, resp1.Body)
|
|
|
|
|
+ inputFile.Close()
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
logx.Errorf("读取文件失败 error:", err.Error())
|
|
logx.Errorf("读取文件失败 error:", err.Error())
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
- silkFile, _ = os.Open(silkPath)
|
|
|
|
|
- defer func() {
|
|
|
|
|
- silkFile.Close()
|
|
|
|
|
- silk.FileRemove(silkPath)
|
|
|
|
|
- }()
|
|
|
|
|
- //判断文件类型,如果不是语音则返回
|
|
|
|
|
- var isAudio bool
|
|
|
|
|
|
|
+ //判断文件类型,如果不是指定语音则返回
|
|
|
|
|
+ inputFile, _ = os.Open(inputPath)
|
|
|
|
|
+ var inputType int // 1:silk 2:mp3
|
|
|
var buf = make([]byte, 10)
|
|
var buf = make([]byte, 10)
|
|
|
- if _, err = silkFile.Read(buf); err == nil {
|
|
|
|
|
|
|
+ if _, err = inputFile.Read(buf); err == nil {
|
|
|
|
|
+ inputFile.Close()
|
|
|
if bytes.Equal(buf, []byte{2, 35, 33, 83, 73, 76, 75, 95, 86, 51}) {
|
|
if bytes.Equal(buf, []byte{2, 35, 33, 83, 73, 76, 75, 95, 86, 51}) {
|
|
|
- isAudio = true
|
|
|
|
|
|
|
+ os.Rename(inputPath, inputPath+".silk")
|
|
|
|
|
+ inputType = 1
|
|
|
|
|
+ inputPath += ".silk"
|
|
|
|
|
+ } else if bytes.Equal(buf[:5], []byte{35, 33, 65, 77, 82}) {
|
|
|
|
|
+ os.Rename(inputPath, inputPath+".mp3")
|
|
|
|
|
+ inputType = 2
|
|
|
|
|
+ inputPath += ".mp3"
|
|
|
}
|
|
}
|
|
|
|
|
+ defer silk.FileRemove(inputPath)
|
|
|
}
|
|
}
|
|
|
- //读取的游标回到0
|
|
|
|
|
- silkFile.Seek(0, 0)
|
|
|
|
|
- if !isAudio {
|
|
|
|
|
|
|
+ if inputType == 0 {
|
|
|
err = StopTranscoderError
|
|
err = StopTranscoderError
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
// 转码
|
|
// 转码
|
|
|
- wavPath, pcmPath := silk.TransSilkToWav(silkPath)
|
|
|
|
|
|
|
+ var wavPath, pcmPath string
|
|
|
|
|
+ if inputType == 1 {
|
|
|
|
|
+ wavPath, pcmPath = silk.TransSilkToWav(inputPath)
|
|
|
|
|
+ } else if inputType == 2 {
|
|
|
|
|
+ wavPath, pcmPath = silk.TransMp3ToWav(inputPath)
|
|
|
|
|
+ }
|
|
|
wavFile, err := os.Open(wavPath)
|
|
wavFile, err := os.Open(wavPath)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
logx.Errorf("读取wav文件失败 error:", err.Error())
|
|
logx.Errorf("读取wav文件失败 error:", err.Error())
|