让ffmpeg与Heroku一起工作

时间:2013-11-17 17:56:58

标签: ruby-on-rails heroku ffmpeg bundler

我尝试为我的Heroku Rails应用程序安装ffmpeg,现在我的应用程序崩溃了。

我使用以下命令添加了一个buildpack:

heroku config:add BUILDPACK_URL=https://github.com/shunjikonishi/heroku-buildpack-ffmpeg

推送到Heroku后,根据我的日志得到以下错误:

2013-11-17T17:50:44.022351+00:00 heroku[web.1]: Starting process with command `bundle exec rails server -p 47171`
2013-11-17T17:50:46.295602+00:00 app[web.1]: bash: bundle: command not found
2013-11-17T17:50:47.589491+00:00 heroku[web.1]: Process exited with status 127
2013-11-17T17:50:47.597968+00:00 heroku[web.1]: State changed from starting to crashed
2013-11-17T17:50:48.620853+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ (...) fwd="76.118.180.235" dyno= connect= service= status=503 bytes=
2013-11-17T17:50:48.847288+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/favicon.ico host=(...) fwd="76.118.180.235" dyno= connect= service= status=503 bytes=

当我运行 heroku run rake db:migrate 时,我收到错误:

Running `rake db:migrate` attached to terminal... up, run.9791
(in /app)
rake aborted!
no such file to load -- bundler/setup
<internal:lib/rubygems/custom_require>:29:in `require'
<internal:lib/rubygems/custom_require>:29:in `require'
/app/config/boot.rb:6:in `<top (required)>'
<internal:lib/rubygems/custom_require>:29:in `require'
<internal:lib/rubygems/custom_require>:29:in `require'
/app/config/application.rb:1:in `<top (required)>'
<internal:lib/rubygems/custom_require>:29:in `require'
<internal:lib/rubygems/custom_require>:29:in `require'
/app/Rakefile:5:in `<top (required)>'
/usr/local/lib/ruby/1.9.1/rake.rb:2373:in `load'
/usr/local/lib/ruby/1.9.1/rake.rb:2373:in `raw_load_rakefile'
/usr/local/lib/ruby/1.9.1/rake.rb:2007:in `block in load_rakefile'
/usr/local/lib/ruby/1.9.1/rake.rb:2058:in `standard_exception_handling'
/usr/local/lib/ruby/1.9.1/rake.rb:2006:in `load_rakefile'
/usr/local/lib/ruby/1.9.1/rake.rb:1991:in `run'
/usr/local/bin/rake:31:in `<main>'

当我检查我正在使用的捆绑包的版本(捆绑显示捆绑包)时,我得到:

/Users/(...).rvm/gems/ruby-1.9.3-p448/gems/bundler-1.3.5/lib/bundler.rb:284: warning: Insecure world writable dir /usr/local in PATH, mode 040777
/Users/(...)/.rvm/gems/ruby-1.9.3-p448/gems/bundler-1.3.5

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:8)

您已使用FFMpeg buildpack替换了Ruby buildpack。这不起作用。您仍然需要包含Ruby buildpack来运行Rails应用程序。

你可以使用ddollar的heroku buildpack-multi - https://github.com/ddollar/heroku-buildpack-multi

来做到这一点

然后,您将.buildpacks文件添加到项目的根目录中,该目录包含标准的Ruby buildpack和FFMpeg buildpack。

答案 1 :(得分:4)

当我尝试使用我的rails应用程序将FFMPEG安装到Heroku上时,我遇到了类似的问题。我最终使用了paperclip-av-transcoder gem,因为所有其他FFMPEG宝石都已被弃用。

无论如何,我已经在Heroku上安装了FFMPEG buildpack(一个附加组件)。这导致了我的Heroku应用程序进程,“没有运行Web进程”错误。

显然,当您在Heroku中安装buildpack时,您现在必须使用以下基本指令创建Procfile

web: bin/rails server -p $PORT -e $RAILS_ENV
worker: bundle exec rake jobs:work

但是,您仍然需要登录Heroku.com并打开它们!哪个太荒谬了!但是我的应用程序现在可用

所以过程是:

  1. 安装宝石
  2. 在Heroku上安装buildpack
  3. 在应用的根路径创建Procfile,并编写基本说明以启动应用并启动dynos
  4. 登录Heroku.com并手动打开“资源”选项卡中的进程。

答案 2 :(得分:2)

我面临同样的问题,并试图安装现有的ffmpeg buildpacks,如https://github.com/issueapp/heroku-buildpack-ffmpeg,但所有只支持'ffmpeg'单一推荐但我们需要'ffmpeg'的全部支持,就像安装后在我们的本地系统上工作一样。

我在buildpack中做了一些更改并在https://github.com/laddhadhiraj/heroku-buildpack-ffmpeg创建了一个自定义构建包,因此它将支持所有ffmpeg命令'ffmpeg,ffprobe,ffserver,ffmpeg-10bit和qt-faststart'

为heroku app安装完整支持'ffmpeg'的简便方法

# Ruby buildpack
$ cat .buildpacks
https://github.com/laddhadhiraj/heroku-buildpack-ffmpeg
https://github.com/heroku/heroku-buildpack-ruby

# for new project
$ heroku create --buildpack https://github.com/ddollar/heroku-buildpack-multi

# for existing project
$ heroku buildpacks:set https://github.com/ddollar/heroku-buildpack-multi

$ heroku config:set FFMPEG_BIN_URL="http://johnvansickle.com/ffmpeg/releases/ffmpeg-release-64bit-static.tar.xz"

$ git push heroku master

# verify and profit!
$ heroku run "ffmpeg -version"
$ heroku run "ffprobe -version"
$ heroku run "ffserver -version"
$ heroku run "ffmpeg-10bit -version"
$ heroku run "qt-faststart -version"

答案 3 :(得分:2)

如果有人在2020年仍然遇到此问题,请采用以下解决方案: 为了使FFmpeg在Heroku的Rails应用程序上运行,只需从Heroku CLI运行它:

heroku buildpacks:add -i 1 https://github.com/heroku/heroku-buildpack-activestorage-preview

我假设您正在使用图像/视频的活动存储,因此在Heroku上安装FFmpeg将允许创建视频缩略图。 链接到Heroku文档:https://devcenter.heroku.com/articles/active-storage-on-heroku