FFMPEG无法读取Heroku上/ tmp /中的文件

时间:2018-01-17 19:03:41

标签: node.js bash heroku imagemagick tmp

我在heroku上创建了一个使用imagemagick的nodejs应用程序。我正在做这个操作:

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告诉我这个目录已经存在。

我还尝试通过export MAGICK_TMPDIR="temp"更改imagemagick的临时目录和环境变量。

任何帮助?

编辑:变量现在是绝对的。

1 个答案:

答案 0 :(得分:1)

您确定它不是权限问题吗?你能写一个简单的文本文件到/app/temp吗?什么都没有被读或写,这听起来像是一个权限问题。也许它不一定是ImageMagick的保护设计,而是heroku或你的编程环境?

您尝试使用此目录,它的特殊之处在于它包含损坏或不完整的文件 - 当某些软件运行时,它可能具有特殊保护或防护。 temp目录通常被设计(或假设)以免受用户干扰,因为它们只能由程序本身使用和使用 - 而不是程序的用户命令。

This question is similar to yours,它可以帮到你。