2017-11-10 131 views
0

我正在使用ffmpeg-cli-wrapper从我上传到AWS lambda的应用程序运行FFmpeg。我最初得到AWS Lambda。错误= 20(不是目录)当FFmpeg移动到/ tmp

错误= 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命令只是将它重命名为它应该执行的操作。

+0

该错误似乎没有道理,但您的主目录不可写,所以移动不应该工作。尝试'cp'。 –

+0

嗯,我通过切换到'ProcessBuilder'(之前使用'Runtime.exec()')来解决这个问题。现在,当访问/ tmp中的ffmpeg(即使在'chmod 755''/ tmp中的文件之后),我又得到了'error = 13,Permission denied',我应该问一个新的问题吗? –

+0

我现在修复了这个问题!我最初是从Windows 10 bash中获得文件的,但是我发现它一直没有任何影响。我发现了一种在Windows中做同样事情的方法,现在我可以使用FFmpeg。谢谢你的帮助! –

回答

0

我是从Windows环境创建JAR的,我的理解是,在lambda环境中的chmod 755'ing没有效果因此。

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

我也遇到了一个错误= 2(无此文件或目录),这是我到目前为止已经能够通过解析:
一)开关从Runtime.exec()ProcessBuilder
                         (我猜的Runtime.exec()小 '精',需要额外的配置)
b)使用cp,而不是mv
c)从相同的方法运行ProcessBuilder我调用FFmpeg,而不是调用同一类的不同方法来完成此操作。不知道为什么这是...