FFMPEG не может читать файлы в /tmp/ на Heroku

Я создал приложение nodejs, размещенное на heroku, которое использует imagemagick. Я делаю эту операцию:

require('child_process').exec(`convert -quiet -delay 1 output.avi ${gif}`);

Это должно конвертировать output.avi (который присутствует) в файл GIF. В этом случае, gif является "/app/temp/gifs/xstrycatdq.gif", Эта команда отлично работает на моей локальной машине Windows. Как я использую path модуль для получения переменной с path.joinа также __dirname,

Я установил геройку buildpack:

Я получаю ошибку:

Command failed: convert -quiet -delay 1 output.avi /app/temp/gifs/xstrycatdq.gif
convert: DelegateFailed `'ffmpeg' -nostdin -v -1 -vframes %S -i '%i' -vcodec pam -an -f rawvideo -y '%u.pam' 2> '%Z'' @ error/delegate.c/InvokeDelegate/1919.
convert: UnableToOpenBlob `magick-93R4VJcemPz0z1.pam': No such file or directory @ error/blob.c/OpenBlob/2705.
convert: NoImagesDefined `/app/temp/gifs/xstrycatdq.gif' @ error/convert.c/ConvertImageCommand/3257.

Кажется, что каталог /tmp/ не может быть записан или что-то еще. Я также пытался mkdir /tmp/ но bash говорит мне, что этот каталог уже существует.

Я также попытался изменить временный каталог imagemagick с помощью переменной среды, выполнив export MAGICK_TMPDIR="temp",

Любая помощь?

Изменить: переменные теперь являются абсолютными.

1 ответ

Вы уверены, что это не проблема разрешений? Можете ли вы написать простой текстовый файл /app/temp? Ничего не читается и не пишется вообще, это звучит как проблема с разрешениями. Может быть, это не обязательно дизайн защиты ImageMagick, а скорее геройка или ваша среда программирования?

Этот каталог, который вы пытаетесь использовать, отличается тем, что в нем содержатся поврежденные или неполные файлы - в нем могут быть установлены специальные средства защиты или защиты, когда работает определенное программное обеспечение. temp Каталоги обычно разрабатываются (или предполагаются) защищенными от вмешательства пользователя, поскольку они должны использоваться и обрабатываться только самой программой, а не командами пользователя программы.

Этот вопрос похож на ваш, он может вам помочь.

Другие вопросы по тегам