heroku-buildpack-ffmpeg-latest icon indicating copy to clipboard operation
heroku-buildpack-ffmpeg-latest copied to clipboard

Buildpack not working

Open yusjacobs opened this issue 2 years ago • 38 comments

Getting this when deploying in heroku:

Using buildpacks: 1. https://github.com/jonathanong/heroku-buildpack-ffmpeg-latest.git 2. heroku/python -----> ffmpeg app detected -----> Installing ffmpeg Variable FFMPEG_DOWNLOAD_URL isn't set, using default value Downloading https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz Unable to download ffmpeg: 000

yusjacobs avatar Aug 21 '23 19:08 yusjacobs

I am seeing the same thing and the ENV variable suggestion is also not working - and I think that is related to the two open PRs here.

stevenmaguire avatar Aug 21 '23 19:08 stevenmaguire

This started happening today. At the same time the scheduled tests started to fail

yusjacobs avatar Aug 21 '23 19:08 yusjacobs

This is happening in our environment too.

I can download https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz without any issues. I wonder how to resolve this? Can we help? How?

knagode avatar Aug 21 '23 19:08 knagode

Same here, started to fail today. Moving the buildpack to the top or bottom of the buildpack list did not help either. Setting FFMPEG_DOWNLOAD_URL is not helping, since it is somehow not picked up by the deployment.

agieche avatar Aug 21 '23 19:08 agieche

I filed a ticket at heroku support. Will keep you in loop, if there is a suggestion from them.

agieche avatar Aug 21 '23 19:08 agieche

In the meantime i downloaded the binary from https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz and added it to my repository. I then deployed the app to Heroku and it is working. Just make sure you call the correct PATH to the binary in your code.

yusjacobs avatar Aug 21 '23 20:08 yusjacobs

@yusjacobs

Just make sure you call the correct PATH to the binary in your code.

Did you simply put this file in public directory and then use:

FFMPEG_DOWNLOAD_URL

to download it? (In open PR-s I see that this doesn't work for some people)

knagode avatar Aug 21 '23 20:08 knagode

I created a bin folder in my repo and placed the binaries in there, both ffmpeg and ffmprobe. You can download both here: https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz

I then updated my commands like this:

command = ["./bin/ffmpeg", "-ss",.....

yusjacobs avatar Aug 21 '23 20:08 yusjacobs

Same issue on my end

ekaj2 avatar Aug 21 '23 20:08 ekaj2

👋🏻

mindtonic avatar Aug 21 '23 20:08 mindtonic

I filed a ticket at heroku support. Will keep you in loop, if there is a suggestion from them.

We need someone with an enterprise account so they can escalate it quickly and not wait for two days for their reply 😭

sasharevzin avatar Aug 21 '23 21:08 sasharevzin

Looked a little deeper into the issue. There seems to be a SSL TLS issue, when the heroku machine curls the tar.xz file, resultung in a status code 000, which is interpreted as error by the buildpack. However, when moving the archive to a different location, the buildpack works flawlessly again.

I forked the original buildpack and adjusted the url to a copy of the archive on my servers. Problem solved, deployment is working again.

If anyone wants to have a look on my workaround fork in order to build their own: https://github.com/agieche/heroku-buildpack-ffmpeg-latest

You can use it for now as drop in replacement of the current non working build pack until things have been sorted out:

heroku buildpacks:add --index 1 https://github.com/agieche/heroku-buildpack-ffmpeg-latest.git

Keep in mind, that I will remove the file in a resaonable amount of time after the original url is working again due to a future fix of heroku.

agieche avatar Aug 21 '23 21:08 agieche

Thanks @agieche. To clarify, 1) your diagnosis is that johnvansickle.com SSL cert is causing the problem and 2) your fork is only pointing to a different remote URL where an SSL issue is not present, correct?

The thing that I am still not seeing function correctly is the FFMPEG_DOWNLOAD_URL env variable. It seems that if I am correct in both of those points, we should not need a new fork of the package, merely a successful path to use FFMPEG_DOWNLOAD_URL to point to a new remote URL.

stevenmaguire avatar Aug 21 '23 21:08 stevenmaguire

Thanks @agieche. To clarify, 1) your diagnosis is that johnvansickle.com SSL cert is causing the problem and 2) your fork is only pointing to a different remote URL where an SSL issue is not present, correct?

The thing that I am still not seeing function correctly is the FFMPEG_DOWNLOAD_URL env variable. It seems that if I am correct in both of those points, we should not need a new fork of the package, merely a successful path to use FFMPEG_DOWNLOAD_URL to point to a new remote URL.

I tried using the env variable at first, but I could not find an obvious way to access the Heroku env vars from within the shell script. Otherwise, this fork would be unnecessary.

I don't think, it is an issue at the end of https://www.johnvansickle.com/ffmpeg/ since curling it from my local machine is working with a correct 200 status code. Seems more of an issue in the local networking of heroku, but I'm not a 100% on this.

agieche avatar Aug 21 '23 21:08 agieche

Checked my forked buildpack on two different production apps and deployments went fine.

agieche avatar Aug 21 '23 21:08 agieche

Just fixed it for my production app as well. Appreciate the quick hotfix @agieche

ekaj2 avatar Aug 21 '23 21:08 ekaj2

I added support for reading the ENV variables within my fork thanks to this PR: https://github.com/jonathanong/heroku-buildpack-ffmpeg-latest/pull/61/files

I set the ENV variable FFMPEG_DOWNLOAD_URL and restarted dynos and the variable was picked up correctly.

agieche avatar Aug 21 '23 21:08 agieche

I set the ENV variable FFMPEG_DOWNLOAD_URL and restarted dynos and the variable was picked up correctly.

Did you have success setting this variable in the Heroku App (heroku config ... etc) or the app.json "env" key, or both?

stevenmaguire avatar Aug 21 '23 21:08 stevenmaguire

I set the ENV variable FFMPEG_DOWNLOAD_URL and restarted dynos and the variable was picked up correctly.

Did you have success setting this variable in the Heroku App (heroku config ... etc) or the app.json "env" key, or both?

I added the code to my fork. Then set the env variable within web interface (https://dashboard.heroku.com/apps/my-app-16815/settings) and deployed from CLI. Then, the Env variable was picked up correctly.

agieche avatar Aug 21 '23 21:08 agieche

I added the code to my fork. Then set the env variable within web interface (https://dashboard.heroku.com/apps/my-app-16815/settings) and deployed from CLI. Then, the Env variable was picked up correctly.

Awesome. Thanks!

stevenmaguire avatar Aug 21 '23 21:08 stevenmaguire

I've taken a different approach to resolving this. Instead of using the precompiled binaries from johnvansickle.com, I've moved to using the official Ubuntu apt package.

This can be done by:

  1. Adding the Heroku apt buildpack to your app
  2. Creating an Aptfile in your repo with this as its contents:
ffmpeg
  1. Removing this buildpack

jharrilim avatar Aug 21 '23 22:08 jharrilim

With the Apt buildpack, when I re-deploy then try to run ffmpeg -version in the heroku shell, I receive an error with the messageerror while loading shared libraries.... The deploy also results in a much larger slug size (~250MB with no other buildpacks installed)

Another alternative buildpack is the heroku-buildpack-activestorage-preview which also installs the ffmpeg binary.

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

This buildpack also seems to fix the segfault issue on heroku-22 stack (https://github.com/jonathanong/heroku-buildpack-ffmpeg-latest/issues/69)

mmaloon avatar Aug 22 '23 01:08 mmaloon

Thanks @agieche, I added you as a collaborator. I don't use this build pack anymore. If Heroku wants to own this package, let me know!

jonathanong avatar Aug 22 '23 03:08 jonathanong

Merged #61, so you can set a correct download url via env variable now. No definitive answer from heroku, but they are looking into it.

agieche avatar Aug 22 '23 12:08 agieche

@agieche What value should the env variable FFMPEG_DOWNLOAD_URL in heroku client should take? many thanks!

diegotorpoco avatar Aug 22 '23 14:08 diegotorpoco

@agieche What value should the env variable FFMPEG_DOWNLOAD_URL in heroku client should take? many thanks!

Just add a new env variable in heroku->setting FFMPEG_DOWNLOAD_URL : https://cookycookstaging.s3.amazonaws.com/ffmpeg-git-amd64-static.tar.xz

image

and redeploy. Before redeploying I also restarted the dynos, but I guess that it is not necessary.

This solution is not safe. Do not use it for enterprises and banks.

kayvaninvemo avatar Aug 22 '23 15:08 kayvaninvemo

@kayvaninvemo is it safe to use this bucket? it looks very suspicious to me

sasharevzin avatar Aug 22 '23 15:08 sasharevzin

@kayvaninvemo is it safe to use this bucket? it looks very suspicious to me

Its a personal bucket by me. Feel free to upload the archive on your own space and point the env variable to your personal url. This makes it more robust. For the time being, you may use my copy, since Im planning to keep it up until things have been sorted out by heroku support.

agieche avatar Aug 22 '23 15:08 agieche

@agieche What value should the env variable FFMPEG_DOWNLOAD_URL in heroku client should take? many thanks!

Just add a new env variable in heroku->setting FFMPEG_DOWNLOAD_URL : cookycookstaging.s3.amazonaws.com/ffmpeg-git-amd64-static.tar.xz

image and redeploy. Before redeploying I also restarted the dynos, but I guess that it is not necessary.

Hey, thanks! In the mean time I tried to use @dzuelke recommendation of using heroku active storage buildpack (https://github.com/jonathanong/heroku-buildpack-ffmpeg-latest/pull/72)

I have tested in production and it works.

https://github.com/heroku/heroku-buildpack-activestorage-preview.git on heroku buildpacks section

diegotorpoco avatar Aug 22 '23 15:08 diegotorpoco

@kayvaninvemo is it safe to use this bucket? it looks very suspicious to me

It is not safe, do not use it if it is for an enterprise or a bank. :D

kayvaninvemo avatar Aug 22 '23 15:08 kayvaninvemo