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

dfddblmv  于 9个月前  发布在  其他
关注(0)|答案(2)|浏览(124)

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

# Aptfile
libsndfile1
libsndfile1-dev
ffmpeg
libvpx7
libpulse0
pulseaudio

我有这些buildpack:

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

我一直用一个简单的heroku run 'ffmpeg --version'得到这个错误:
ffmpeg:加载共享库时出错:libpulsecommon-15.99.so:无法打开共享对象文件:No such file or directory
这是在Heroku-22上,但我在Heroku-20上得到了同样的错误。
我花了几个小时在这上面,我仍然很困惑,因为...

  1. libpulsecommon-15.99.so是什么?
    1.是不是图书馆没有安装?或者正在安装但未找到?
  • 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中),对于小于1 MB的代码库,我已经达到了487 MB的slug大小(超出了300 MB的软限制,500 MB的硬限制)。
任何帮助欢迎。我会根据需要更新问题。

vqlkdk9b

vqlkdk9b1#

libpulsecommon-15.99.so是什么?
在Heroku 22堆栈所基于的Ubuntu 22.04上,it is part of the libpulse0 package已经包含在Aptfile中。我不知道为什么在运行时找不到它。
您可以尝试使用专用的FFmpeg buildpack,而不是通过Ubuntu软件包安装。This one看起来很受欢迎。
像这样的东西应该可以做到:

  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
avwztpqn

avwztpqn2#

问题是,pulseaudio和其他一些软件包将库安装在/usr/lib/x86_64-linux-gnu所在的子目录中,因此库不在路径中。您需要更新LD_LIBRARY_PATH来处理这些子目录。
像这样的东西会有所帮助:

# list the directories
ls -lah -d `$HOME/.apt/usr/lib/x86_64-linux-gnu/*/

# add each to your LD_LIBRARY_PATH
# make sure to add each one as necessary, I only show off one path below
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$HOME/.apt/usr/lib/x86_64-linux-gnu/pulseaudio/"

# check that it worked
ffmpeg --help

相关问题