首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Android q ffmpeg拒绝权限“:error=13,权限被拒绝

使用Android q ffmpeg拒绝权限“:error=13,权限被拒绝
EN

Stack Overflow用户
提问于 2020-02-24 14:12:33
回答 7查看 17.1K关注 0票数 25

我想得到的帧从RTSP视频使用ffmpeg。但对于android 10以上版本,我得到的错误如下所示。

代码语言:javascript
复制
 E/FFmpeg: Exception while trying to run: [Ljava.lang.String;@55e447f
java.io.IOException: Cannot run program "/data/user/0/com.example.downloadimagefromurl/files/ffmpeg": error=13, Permission denied
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1050)
    at java.lang.Runtime.exec(Runtime.java:698)
    at java.lang.Runtime.exec(Runtime.java:563)
    at com.github.hiteshsondhi88.libffmpeg.ShellCommand.run(ShellCommand.java:10)
    at com.github.hiteshsondhi88.libffmpeg.FFmpegExecuteAsyncTask.doInBackground(FFmpegExecuteAsyncTask.java:38)
    at com.github.hiteshsondhi88.libffmpeg.FFmpegExecuteAsyncTask.doInBackground(FFmpegExecuteAsyncTask.java:10)
    at android.os.AsyncTask$3.call(AsyncTask.java:378)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:289)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at java.lang.Thread.run(Thread.java:919)
 Caused by: java.io.IOException: error=13, Permission denied
    at java.lang.UNIXProcess.forkAndExec(Native Method)
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:133)

根据@Saurabh Thorat提供的答案,Google不允许应用程序运行/data/user目录中的二进制文件。

据我所知,一个糟糕的解决方案是将compileSdkVersion和targetSdkVersion更改为28或更低,然后重新发布我的应用程序,这是不推荐的。

因此,我也在为未来的版本寻找更可行的解决方案。

任何提示,链接或建议将受到高度赞赏。提前谢谢。

EN

Stack Overflow用户

发布于 2020-07-04 23:12:30

根据@Saurabh Thorat的回答,我提出了一个拉取请求,解决了这个问题。你可以在here上找到它。

快速总结:

将ffmpeg二进制文件移动到libs文件夹,并将android:extractNativeLibs = "true"添加到清单中,这样它就可以将自己复制到/data/app/{package_name}/lib/{arch}/中,然后从那里执行它(在Android10上支持)。

编辑(一般使用):为了将可执行文件复制到/data/app/{package_name}/lib/{arch}/中,文件名必须为lib(something).so。如果名称不是以lib开头并以.so结尾,则不会被复制。

票数 2
EN
查看全部 7 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60370424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档