登录
首页 >  Golang >  Go问答

在 App Engine Standard 上的 Go 中使用系统包

来源:stackoverflow

时间:2024-02-20 20:30:30 327浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《在 App Engine Standard 上的 Go 中使用系统包》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下,希望所有认真读完的童鞋们,都有实质性的提高。

问题内容

我正在尝试在 google app engine standard 上运行的 go 应用程序中使用 ffmpeg。当我使用 exec.command() 指向 ffmpeg 二进制文件的本地实例时,我可以让它在本地运行

cmd := exec.command(
    "/users/justin/desktop/conversion/ffmpeg", // this won't work on a remote server
    "-i", "pipe:0",
    "-ac", "1",
    "-codec:a", "libmp3lame",
    "-b:a", "48k",
    "-ar", "24000",
    "-f", "mp3",
    "pipe:1",
  )

  cmd.stdin = bytes.newreader(synthresp.audiocontent)

  var output bytes.buffer
  cmd.stdout = &output
  err = cmd.run()

显然,当我部署应用程序时,这将不起作用,因此我需要一种方法来指向 ffmpeg 二进制文件的托管版本。看来ffmpeg是go1.11 app engine标准环境的系统包。

什么是“系统包”以及如何使用它们? 当我查找文档时,我发现很多有关 apt-get 的文档,但没有有关如何使用它们、app engine 或其他方式的文档。我是否需要安装它,或者它应该已经是 app engine 正在运行的容器(?)的一部分?

我是否像调用其他可执行文件一样调用它?如果是这样,我希望这能起作用,但事实并非如此

cmd := exec.Command(
    "ffmpeg", // <------ what should this be?
    "-i", "pipe:0",
    "-ac", "1",
    "-codec:a", "libmp3lame",
    "-b:a", "48k",
    "-ar", "24000",
    "-f", "mp3",
    "pipe:1",
  )

  cmd.Stdin = bytes.NewReader(synthResp.AudioContent)

  var output bytes.Buffer
  cmd.Stdout = &output
  err = cmd.Run()

记录错误,我看到 exec: "ffmpeg": 在 $path 中找不到可执行文件


解决方案


感谢 @iLoveReflection 提出的问题,我意识到应用程序的本地运行版本将调用 ffmpeg 命令,期望它位于标准 $PATH 环境变量指向的位置。我原以为 App Engine 会识别对 ffmpeg 的调用并使用它安装在自定义位置的可执行文件。

ffmpeg 可执行文件移动到 /usr/local/bin,并确保 $PATH 包含该目录解决了该问题。

今天关于《在 App Engine Standard 上的 Go 中使用系统包》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>