【问题标题】:FFMPEG command is not Working when set project's target SDK version 29(Android Q issue)设置项目的目标 SDK 版本 29(Android Q 问题)时,FFMPEG 命令不起作用
【发布时间】:2019-10-21 03:58:27
【问题描述】:

我正在使用 FFMPEG 库来获取视频上的水印戳。当我的项目的目标 SDK 版本为 28 时,它在所有版本中都像魅力一样工作,但是当我将目标 SDK 版本设置为 29 时,它给了我以下异常。

E/FFmpeg:尝试运行时出现异常:[Ljava.lang.java.io.IOException:无法“/data/user/0/com.videowatermark.addtextandtimestampongalleryvideos/files/ffmpeg”:错误=13,权限被拒绝

原因:java.io.IOException: error=13,在 java.lang.UNIXProcess.(UNIXProcess.java:133) 在 java.lang.ProcessImpl 的 java.lang.UNIXProcess.forkAndExec(Native Method) 的权限被拒绝.start(ProcessImpl.java:141) 在 java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) 在 java.lang.Runtime.exec(Runtime.java:698) 在 java.lang.Runtime.exec(Runtime. java:563) 在 com.github.hiteshsondhi88.libffmpeg.ShellCommand.run(ShellCommand.java:10) 在 com.github.hiteshsondhi88.libffmpeg.FFmpegExecuteAsyncTask.doInBackground(FFmpegExecuteAsyncTask.java:38) 在 com.github.hiteshsondhi88.libffmpeg .FFmpegExecuteAsyncTask.doInBackground(FFmpegExecuteAsyncTask.java:10) 在 android.os.AsyncTask$3.call(AsyncTask.java:378) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 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) 在 java.lang.Thread.run(Thread.java:919)

//显示这个错误

【问题讨论】:

  • 这个错误什么时候来?我的意思是在哪个操作上?
  • 当我为冲压过程选择视频&而不是 FFMPEG 命令通过时,它给出了异常。
  • 你检查过你正在获取视频 uri 吗?可能的问题是FileProvider。您是否在清单中定义了File Provider
  • 是的,我检查过了,我正在获取视频 URI,我只遇到了 Android Q 的问题。
  • 没有官方文档。

标签: android ffmpeg video-processing


【解决方案1】:

Android Api 29 及更高版本删除了应用主目录的执行权限。 以 Android 10 为目标的应用无法对应用主目录中的文件调用 exec()

Details in the following link

很遗憾,我没有找到解决问题的方法。

【讨论】:

    猜你喜欢
    • 2020-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多