android - 设置项目的目标 SDK 版本 29(Android Q 问题)时,FFMPEG 命令不起作用

标签 android ffmpeg video-processing

我正在使用 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.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) 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) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.ja va:641) 在 java.lang.Thread.run(Thread.java:919)

//显示这个错误

最佳答案

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

Details in the following link

不幸的是,我没有找到解决问题的方法。

关于android - 设置项目的目标 SDK 版本 29(Android Q 问题)时,FFMPEG 命令不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58479616/

相关文章:

python - 使用python为视频添加字幕

java - 显示下一个 Activity 的数据

FFmpeg 从视频中间删除 2 秒并连接部分。单线解决方案

FFmpeg 使用自定义 "af"s 向下复用多个轨道

video - ffmpeg concat 不同时基的视频

tcp - FFMPEG 流原始 H264

c - C , linux 中的音频视频编程

android - 为什么项目上下文菜单没有显示在 ListView 中

java - Android IDE 不创建 Main.java 或 XML

android - 更改 EditTextPreference 时如何显示新值