File dir = new File("/mnt/sdcard");
Process process = Runtime.getRuntime().exec("ffmpeg -f image2 -i img%4d.png video.mp4", null, dir);
当我在 android 中尝试这一行时,我在 android 中得到环境和工作目录空错误。但是当我在java中尝试这条线时,它工作得很好。但是在android中,它有一些问题。
File dir = new File("/mnt/sdcard");
Process process = Runtime.getRuntime().exec("ffmpeg -f image2 -i img%4d.png video.mp4", null, dir);
当我在 android 中尝试这一行时,我在 android 中得到环境和工作目录空错误。但是当我在java中尝试这条线时,它工作得很好。但是在android中,它有一些问题。
i get environment and working directory null
它将返回 null ,因为没有类似/mmt/sdcard
use的路径/mnt/sdcard
。
最好使用Environment.getExternalStorageDirectory()
.
因为在您的Emulator或Device中没有像 E:这样的驱动器。
您无法像这样在 android 中访问您 PC 的任何驱动器。
编辑 :
File dir = Environment.getExternalStoragePublicDirectory();
File f = new File(dir."Yourfilename.png");
Android 安全不允许从 sdcard 或 USB 内存启动可执行文件。
您可以将可执行文件部署在您的应用程序文件/目录或全局可写的/data/local/目录中。不要忘记chmod 777
!
而不是使用exec("cmd", env, new File("dir"))
调用exec("dir/cmd")
Android可能没有E盘,其实我可以保证。Android 有一个 linux 操作系统,并且不使用相同的驱动器命名约定。此外,每当编写生成进程的代码时,我都会考虑使用ProcessBuilder 。它更容易解析命令行选项。