Android:ffmpeg与包含空格的文件名 [英] Android: ffmpeg with filenames containing spaces

查看:198
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆