node.js - FFMPEG 无法读取 Heroku/tmp/on 中的文件

标签 node.js heroku imagemagick tmp

我创建了一个使用 imagemagick 托管在 heroku 上的 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 的临时目录。

有什么帮助吗?

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

最佳答案

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

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

This question is similar to yours ,或许能帮到你。

关于node.js - FFMPEG 无法读取 Heroku/tmp/on 中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48308216/

相关文章:

redirect - 如何在 Node.js + Express 中重定向嵌套 url

node.js - npm 删除失败的安装模块

javascript - 如何在同一个 Visual Studio 项目中混合使用 Node.js 和 Typescript?

image-processing - Instagram 力士效应

javascript - 如何在使用 browserify 时调用 "remove"/"change"一些 require(...) ?

Docker 推送到 Heroku "Unexpected HTTP status: 500 internal server error"

Django 管理模板覆盖 'change_list' 在 Heroku 上不起作用

python - 南迁移不更新 psql 表 (django)

java - 在java中执行外部命令

image-processing - 读取 RGBA 图像 OpenCV