我想写一个处理程序,响应S3 put事件,以转换任何avi文件,上传到mp4。我用Java、Eclipse和AWS工具包插件来做这件事。对于视频转换,我在ffmpeg-cli-wrapper中使用了ffmpeg,并且在源码树中提供了一个静态(linux)二进制文件。
我发现,当我上传函数时,二进制文件被放入/var/task
,但当我尝试使用我编写的测试函数时,我得到了一个"permission denied“错误。
import net.bramp.ffmpeg.FFmpeg;
public class LambdaFunctionHandler implements RequestHandler<S3Event, String> {
private static final String FFMPEG = "/var/task/ffmpeg";
public String handleRequest(S3Event event, Context context) {
try {
FFmpeg ff = new FFmpeg(FFMPEG);
System.out.println(ff.version());
} catch (Exception e) {
e.printStackTrace();
}
return "foo";
}
}
堆栈跟踪的第一行:java.io.IOException: Cannot run program "/var/task/ffmpeg": error=13, Permission denied
。
如何执行此二进制文件?我已经按照其他人的建议在上传之前对二进制文件执行了chmod 755
操作,但这并没有起到什么作用。
发布于 2016-03-19 03:53:10
正如helloV提到的,您可能需要包含一个静态的ffmpeg二进制文件,并将其复制到某个位置并从那里执行。here给出了详细的答案(node.js代码)
https://stackoverflow.com/questions/36063411
复制相似问题