GoLang将webm转换为mp3

GoLang将webm转换为mp3,go,mp3,webm,Go,Mp3,Webm,这是我的代码示例 package main import ( "fmt" "io" "net/http" "github.com/kkdai/youtube" ) func getVideo() { client := youtube.Client{} currentVideo, videoError := client.GetVideo("https://www.youtu

这是我的代码示例

package main 

import (
  "fmt"
  "io"
  "net/http"

  "github.com/kkdai/youtube"
)

func getVideo() {
  client := youtube.Client{}
  currentVideo, videoError := client.GetVideo("https://www.youtube.com/watch?v=kGEJNZd1hTA")
  resp, err := client.GetStream(currentVideo, &currentVideo.Formats.Type("audio/webm")[0])
  w.Header().Set("Content-Type", req.Header.Get("Content-Type"))
  w.Header().Set("Content-Disposition", "attachment; filename=WHATEVER_YOU_WANT.webm")
  io.Copy(w, resp.Body)
}

func main() {
  http.HandleFunc("/video", getVideo)

  http.ListenAndServe(":8090", nil)
}
因此,问题是如何将我的webm流转换为mp3并将其提供给客户端?

是使用媒体的一个好选择。
您可以尝试使用go的pkg来使用它,并从那里运行ffmpeg命令

一些库在go中为ffmpeg提供绑定-

是的,但是它太重了,如果我想异步执行该怎么办?据我所知,ffmpeg创建子进程,所以在上一个进程尚未完成时,我无法运行新进程。您需要的是一个转码器来转换媒体。大多数转码器彼此的比例为+/-10%。因此,这里没有这样的“轻量级”解决方案。关于异步行为,这取决于您想要在这里实现什么。内存和介质之间的确切事务应该定义并发或并行处理。对你期望的行为有更多的了解。