如何让ffmpeg在Heroku上运行?(libpulsecommon-15.99.so错误)



我正在尝试使用Aptfile在Heroku上运行ffmpeg(用于Flask应用程序,我希望能够使用pydub执行音频转换,这在本地运行良好。)

# Aptfile
libsndfile1
libsndfile1-dev
ffmpeg
libvpx7
libpulse0
pulseaudio

我有这些构建包:

# Output from `heroku buildpacks`
1. heroku-community/apt
2. heroku/python

我用一个简单的heroku run 'ffmpeg --version':不断得到这个错误

ffmpeg:加载共享库时出错:libpulsecommon-15.99.so:无法打开共享对象文件:没有这样的文件或目录

这是在Heroku-22上,但我在Heroku-20上也遇到了同样的错误。

现在我花了几个小时在这上面,我仍然困惑于…

  1. libpulsecommon-15.99.so是什么的一部分
  2. 这是没有安装库的情况吗?或者正在安装但未找到
  • ls $HOME/.apt/usr/lib/x86_64-linux-gnu | grep libpulse(其中$HOME/app/)给出:
libpulse-simple.so.0
libpulse-simple.so.0.1.1
libpulse.so.0
libpulse.so.0.24.1
  • echo $LD_LIBRARY_PATH返回/app/.heroku/vendor/lib:/app/.heroku/python/lib:/app/.apt/usr/lib/x86_64-linux-gnu:/app/.apt/usr/lib/i386-linux-gnu:/app/.apt/usr/lib:

我迷路了,这是我生命中的几个小时,我再也回不来了


我也在想,尝试让ffmpeg以这种方式在Heroku上工作是否有意义:根据上面列出的依赖项(在Aptfile中),对于低于1MB的代码库,我的段塞大小已经达到487MB(软限制为300 MB,硬限制为500 MB)。

欢迎任何帮助。我会根据需要更新问题。

libpulsecommon-15.99.so甚至是什么的一部分?

在Heroku 22堆栈所基于的Ubuntu 22.04上,它是您已经包含在Aptfile中的libpulse0包的一部分。我不知道为什么在运行时找不到它。

您可以尝试专用的FFmpeg构建包,而不是通过Ubuntu软件包进行安装。这个看起来很受欢迎。

应该这样做:

  1. heroku buildpacks:remove heroku-community/apt
  2. heroku buildpacks:add --index 1 https://github.com/jonathanong/heroku-buildpack-ffmpeg-latest.git
  3. git rm Aptfile
  4. git commit

最新更新