Android:ffmpeg与包含空格的文件名 [英] Android: ffmpeg with filenames containing spaces
本文介绍了Android:ffmpeg与包含空格的文件名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想从Android应用程序执行ffmpeg,非常类似于此:使用FFmpeg Android-NDK 。
执行以下命令工作正常:
进程p = Runtime.getRuntime()。exec(/ data / data / yourpackagename / ffmpeg -i infile.mp4 outfile.mp4);
或
进程p = Runtime.getRuntime()。exec(new String [] {/ data / data / yourpackagename / ffmpeg,-i,infile.mp4,outfile.mp4);但是当输入或输出文件名包含空格ffmpeg失败,并显示找不到文件错误时:
/ p>
进程p = Runtime.getRuntime()。在空间中的exec(/ data / data / yourpackagename / ffmpeg -i \ file.mp4\outfile.mp4); // failed
进程p = Runtime.getRuntime()。exec(/ data / data / yourpackagename / ffmpeg -i'in space file.mp4'outfile.mp4); //失败
进程p = Runtime.getRuntime()。在空间file.mp4\中执行exec(new String [] {/ data / data / yourpackagename / ffmpeg,-i,\ ,outfile.mp4); //失败
FFMPEG对于没有空格但没有引用的文件也失败:
进程p = Runtime.getRuntime()。exec(/ data / data / yourpackagename / ffmpeg -i \infile.mp4\outfile.mp4 ); //失败
如何正确传递包含空格的文件到ffmpeg命令?
问候,
解决方案我终于得到了。我忘了一种可能性,而且这一个正在工作:
进程p = Runtime.getRuntime()exec(new String [ ] {/ data / data / yourpackagename / ffmpeg,-i,in space file.mp4,outfile.mp4); // OK
I want to execute ffmpeg from an Android app, very much as described here: Using FFmpeg with Android-NDK.
Executing the following commands work fine:
Process p = Runtime.getRuntime().exec("/data/data/yourpackagename/ffmpeg -i infile.mp4 outfile.mp4");
or
Process p = Runtime.getRuntime().exec(new String[]{"/data/data/yourpackagename/ffmpeg", "-i", "infile.mp4", "outfile.mp4");
But when the input or output filenames contain spaces ffmpeg fails with a "File not found" error:
Process p = Runtime.getRuntime().exec("/data/data/yourpackagename/ffmpeg -i \"in space file.mp4\" outfile.mp4"); // fails
Process p = Runtime.getRuntime().exec("/data/data/yourpackagename/ffmpeg -i 'in space file.mp4' outfile.mp4"); // fails
Process p = Runtime.getRuntime().exec(new String[]{"/data/data/yourpackagename/ffmpeg", "-i", "\"in space file.mp4\"", "outfile.mp4"); //fails
FFMPEG also fails for files without spaces but quoted:
Process p = Runtime.getRuntime().exec("/data/data/yourpackagename/ffmpeg -i \"infile.mp4\" outfile.mp4"); // fails
How can I correctly pass a filename containing spaces to the ffmpeg command?
Regards,
解决方案 I finally got it. I forgot one possibility, and exactly this one is working:
Process p = Runtime.getRuntime().exec(new String[]{"/data/data/yourpackagename/ffmpeg", "-i", "in space file.mp4", "outfile.mp4"); //OK
这篇关于Android:ffmpeg与包含空格的文件名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文