我正在使用ffmpeg-cli-wrapper从我上传到AWS lambda的应用程序运行FFmpeg。我最初得到了
错误= 13拒绝权限
尝试通过包装器ProcessBuilder
调用它时。在上传之前,我的初始解决方案是chmod 755
ffmpeg,但它没有帮助。
有关信息,我的FFmpeg和ffprobe文件位于以下类路径中:static/ffmpeg/ffmpeg
和static/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 :(得分: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
,而不是调用同一类的不同方法来完成此任务。不知道为什么会这样......