rurico / flutter_video_compress

Generate a new file by compressed video, and provide metadata. Get video thumbnail from a video path, supports JPEG/GIF. To reduce app size not using FFmpeg in IOS.
MIT License
188 stars 73 forks source link

android Q run error error=13, Permission denied [Bug] #97

Open kadnan0900 opened 3 years ago

kadnan0900 commented 3 years ago

Cannot run program "/xxx/ffmpeg": error=13, Permission denied i had do many test : at the android 9 is ok , but android 10 is error. i think google change the "Runtime" user permission . Can you fix this ?

bholendraofficial commented 3 years ago

I/flutter ( 6243): FlutterVideoCompress: You can try to subscribe to the I/flutter ( 6243): compressProgress$ stream to know the compressing state. D/FFmpeg ( 6243): Build.CPU_ABI : arm64-v8a D/FFmpeg ( 6243): ffmpeg is ready! E/FFmpeg ( 6243): Exception while trying to run: [/data/user/0/com.iws.backupapp/files/ffmpeg, -noautorotate, -i, /data/user/0/com.iws.backupapp/cache/temp.mp4, -vcodec, h264, -crf, 28, -movflags, +faststart, -vf, scale=192:-2, -preset:v, ultrafast, -b:v, 1000k, /storage/emulated/0/Android/data/com.iws.backupapp/files/flutter_video_compress/temp.mp4] E/FFmpeg ( 6243): java.io.IOException: Cannot run program "/data/user/0/com.iws.backupapp/files/ffmpeg": error=13, Permission denied E/FFmpeg ( 6243): at java.lang.ProcessBuilder.start(ProcessBuilder.java:1050) E/FFmpeg ( 6243): at nl.bravobit.ffmpeg.ShellCommand.run(ShellCommand.java:15) E/FFmpeg ( 6243): at nl.bravobit.ffmpeg.FFcommandExecuteAsyncTask.doInBackground(FFcommandExecuteAsyncTask.java:43) E/FFmpeg ( 6243): at nl.bravobit.ffmpeg.FFcommandExecuteAsyncTask.doInBackground(FFcommandExecuteAsyncTask.java:12) E/FFmpeg ( 6243): at android.os.AsyncTask$3.call(AsyncTask.java:378) E/FFmpeg ( 6243): at java.util.concurrent.FutureTask.run(FutureTask.java:266) E/FFmpeg ( 6243): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) E/FFmpeg ( 6243): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) E/FFmpeg ( 6243): at java.lang.Thread.run(Thread.java:919) E/FFmpeg ( 6243): Caused by: java.io.IOException: error=13, Permission denied E/FFmpeg ( 6243): at java.lang.UNIXProcess.forkAndExec(Native Method) E/FFmpeg ( 6243): at java.lang.UNIXProcess.(UNIXProcess.java:133) E/FFmpeg ( 6243): at java.lang.ProcessImpl.start(ProcessImpl.java:141) E/FFmpeg ( 6243): at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) E/FFmpeg ( 6243): ... 8 more V/MediaMetadataRetriever( 6243): constructor E/MediaMetadataRetriever( 6243): setDataSource - FileNotFoundException D/AndroidRuntime( 6243): Shutting down VM E/AndroidRuntime( 6243): FATAL EXCEPTION: main E/AndroidRuntime( 6243): Process: com.iws.backupapp, PID: 6243 E/AndroidRuntime( 6243): java.lang.IllegalArgumentException E/AndroidRuntime( 6243): at android.media.MediaMetadataRetriever.setDataSource(MediaMetadataRetriever.java:85) E/AndroidRuntime( 6243): at android.media.MediaMetadataRetriever.setDataSource(MediaMetadataRetriever.java:173) E/AndroidRuntime( 6243): at com.example.flutter_video_compress.Utility.getMediaInfoJson(Utility.kt:38) E/AndroidRuntime( 6243): at com.example.flutter_video_compress.FFmpegCommander$compressVideo$1.onFinish(FFmpegCommander.kt:83) E/AndroidRuntime( 6243): at nl.bravobit.ffmpeg.FFcommandExecuteAsyncTask.onPostExecute(FFcommandExecuteAsyncTask.java:77) E/AndroidRuntime( 6243): at nl.bravobit.ffmpeg.FFcommandExecuteAsyncTask.onPostExecute(FFcommandExecuteAsyncTask.java:12) E/AndroidRuntime( 6243): at android.os.AsyncTask.finish(AsyncTask.java:755) E/AndroidRuntime( 6243): at android.os.AsyncTask.access$900(AsyncTask.java:192) E/AndroidRuntime( 6243): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:772) E/AndroidRuntime( 6243): at android.os.Handler.dispatchMessage(Handler.java:107) E/AndroidRuntime( 6243): at android.os.Looper.loop(Looper.java:237) E/AndroidRuntime( 6243): at android.app.ActivityThread.main(ActivityThread.java:8167) E/AndroidRuntime( 6243): at java.lang.reflect.Method.invoke(Native Method) E/AndroidRuntime( 6243): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496) E/AndroidRuntime( 6243): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)

amaurya08 commented 3 years ago

I found on Stack overflow question that from Android Q onwards, you cannot execute binaries in your app's private data directory. From the issue tracker: raised issue