簡體   English   中英

讓 ffmpeg 與 Heroku 一起工作

[英]Getting ffmpeg to work with Heroku

我試圖為我的 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>'

當我檢查我正在使用的 bundler 版本(bundle show bundler)時,我得到:

/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

我該如何解決這個問題?

您已將 Ruby 構建包替換為 FFMpeg 構建包。 那行不通。 您仍然需要包含 Ruby buildpack 才能運行 Rails 應用程序。

您可以使用 ddollar 的 heroku buildpack-multi 來做到這一點 - https://github.com/ddollar/heroku-buildpack-multi

然后,您將一個 .buildpacks 文件添加到您的項目的根目錄,其中包括標准的 Ruby 構建包和 FFMpeg 構建包。

當我嘗試將 FFMPEG 與我的 rails 應用程序安裝到 Heroku 上時,我遇到了類似的問題。 我最終使用了 paperclip-av-transcoder gem,因為所有其他 FFMPEG gem 都已被棄用。

無論如何,我已經在 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. 安裝 gem
  2. 在 Heroku 上安裝 buildpack
  3. 在應用程序的根路徑創建 Procfile 並編寫啟動應用程序和啟動 dynos 的基本說明
  4. 登錄 Heroku.com 並手動打開“資源”選項卡中的進程。

如果有人在 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

我遇到了同樣的問題並嘗試安裝現有的 ffmpeg 構建包,如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應用程序安裝“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"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM