FFMPEG не может читать файлы в /tmp/on 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
.
Я установил heroku 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 сообщает мне, что этот каталог уже существует.
Я также попытался изменить каталог tempememy temp с переменной окружения, выполнив export MAGICK_TMPDIR="temp"
.
Любая помощь?
Изменить: переменные теперь абсолютные.
Ответы
Ответ 1
Вы уверены, что это не проблема разрешений? Можете ли вы написать простой текстовый файл на /app/temp
? Ничто не читается и не написано вообще, это звучит как проблема разрешений. Может быть, это не обязательно дизайн защиты ImageMagick, а скорее геройку или ваша среда программирования?
Этот каталог, который вы пытаетесь использовать, особенный в том, что он содержит поврежденные или неполные файлы - у него могут быть специальные защиты или защитные меры, когда выполняется определенное программное обеспечение. Каталоги temp
обычно разрабатываются (или предполагаются) для защиты от пользовательских помех, поскольку они должны использоваться и обрабатываться самой программой, а не пользовательскими командами программы.
Этот вопрос похож на ваш, он может помочь вам.