【发布时间】:2020-06-07 18:12:50
【问题描述】:
我想使用 ffmpeg 从 RTSP 视频中获取帧。但是对于上面的 android 10,我收到如下错误。
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 或更低,然后重新发布我不推荐的应用程序。
因此,我也在为未来的版本寻找更可行的解决方案。
任何提示、链接或建议将不胜感激。提前致谢。
【问题讨论】:
-
没有@Priyankagb 我已经为我的应用授予了外部存储权限
-
对于您的示例,我也收到相同的错误 2020-02-24 12:38:16.934 2817-3054/com.techdorid.ffmpegandroid.demo W/System.err: java.io.IOException:无法运行程序“/data/user/0/com.techdorid.ffmpegandroid.demo/files/ffmpeg”:错误=13,权限被拒绝
-
在这一行我收到错误(FFmpegExecuteAsyncTask.java:44)
-
这是否仅在使用 ffmpeg 或使用其他与存储相关的东西时发生?
标签: android ffmpeg permissions rtsp android-10.0