AWS Lambda。将FFmpeg移动到/ tmp时,错误= 20(不是目录)

时间:2017-11-10 23:06:49

标签: ffmpeg aws-lambda tmp

我正在使用ffmpeg-cli-wrapper从我上传到AWS lambda的应用程序运行FFmpeg。我最初得到了

  

错误= 13拒绝权限

尝试通过包装器ProcessBuilder调用它时。在上传之前,我的初始解决方案是chmod 755 ffmpeg,但它没有帮助。

有关信息,我的FFmpeg和ffprobe文件位于以下类路径中:static/ffmpeg/ffmpegstatic/ffmpeg/ffprobe。它们也是静态联系的。

AWS Lambda permission denied when trying to use ffmpeg

我试图按照上面示例中给出的说明进行操作,但是当我尝试执行mv或cp命令时:Runtime.exec("mv " + pathToFFmpeg + " /tmp"),我得到了

  

错误= 20,不是目录

错误。

我知道我有正确的FFmpeg路径,因为以下命令mv *pathToFFmpeg* *an arbitrary name*运行时没有错误,这意味着文件就在那里,所以mv命令只是按照它应该的那样重命名它。

1 个答案:

答案 0 :(得分:0)

我是从Windows环境创建JAR的,我的理解是lambda环境中的chmod 755在这个环境中没有效果。

解决方案:在Windows中进行JARing之前,将“Everyone”组的权限授予文件或可能包含的任何目录。它没有显示给我,所以我不得不添加权限组。这似乎解决了我得到的错误= 20和错误= 13错误。 Screenshot of menu。请注意,我仍然必须在lambda函数中包含chmod 755,否则我会再次获得error = 13.

我也遇到了错误= 2(没有这样的文件或目录),我到目前为止已经解决了这个问题:
a)从Runtime.exec()切换到ProcessBuilder
(我认为Runtime.exec()不那么'精致',需要额外的配置)
b)使用cp而不是mv
c)从我调用FFmpeg的相同方法运行ProcessBuilder,而不是调用同一类的不同方法来完成此任务。不知道为什么会这样......