当前位置: 首页 > 面试题库 >

Android:ffmpeg,文件名包含空格

佴博实
2023-03-14
问题内容

我想从Android应用程序执行ffmpeg,非常像这里所述:将FFmpeg与Android-NDK结合使用。

执行以下命令可以正常工作:

Process p = Runtime.getRuntime().exec("/data/data/yourpackagename/ffmpeg -i infile.mp4 outfile.mp4");

要么

Process p = Runtime.getRuntime().exec(new String[]{"/data/data/yourpackagename/ffmpeg", "-i", "infile.mp4", "outfile.mp4");

但是,当输入或输出文件名包含空格时,ffmpeg失败,并显示“找不到文件”错误:

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对于包含空格的文件也失败,但引用如下:

Process p = Runtime.getRuntime().exec("/data/data/yourpackagename/ffmpeg -i \"infile.mp4\" outfile.mp4"); // fails

如何正确将包含空格的文件名传递给ffmpeg命令?

问候,


问题答案:

我终于明白了。我忘记了一种可能性,而实际上这是可行的:

Process p = Runtime.getRuntime().exec(new String[]{"/data/data/yourpackagename/ffmpeg", "-i", "in space file.mp4", "outfile.mp4"); //OK


 类似资料:
  • SSI 指令为用户提供在 Web 服务器处理之前将一个文件的内容插入到另一个文件的方法。ASP 只使用这一机制的 #include 指令。要在 .asp 文件中插入一个文件,使用下面的语法: <!--#include virtual | file ="filename"--> virtual 和 file 关键字指示用来包含该文件的路径的类型,filename 是您想包含的文件的路径和名称。 被包

  • 文件包含 可以使用source和.关键字,如: source ./function.sh . ./function.sh 在bash里,source和.是等效的,他们都是读入function.sh的内容并执行其内容(类似PHP里的include),为了更好的可移植性,推荐使用第二种写法。 包含一个文件和执行一个文件一样,也要写这个文件的路径,不能光写文件名,比如上述例子中: . ./functio

  • include 标签是模板开发中最最常用的标签之一,它可以在模板中包含其它模板的内容;用法如下: <include file='模版1,模版2,...' /> 请不要在include 的模板文件中使用模板布局或者模板继承 file 属性的定义规则: 以前台simlpeboot3主题为例: 控制器/操作 <include file="public/header" /> <!-- 以上表示包含当前

  • tc_include tc_include是前台模板包含文件的方法,用于替换原来的include的标签,实现更多功能 用法: <tc_include file="Public:nav"/> <!--加载的是当前模板的Public/nav.html--> <tc_include file="Public/nav"/> <!--加载的是当前模板的Public/nav.html--> <tc_inclu

  • include 标签是模板开发中最最常用的标签之一,它可以在模板中包含其它模板的内容;用法如下: <include file='模版1,模版2,...' /> 请不要在include 的模板文件中使用模板布局或者模板继承 file 属性的定义规则: 以前台simlpeboot3主题为例: 控制器/操作 <include file="public/header" /> <!-- 以上表示包含当前

  • 在当前模版文件中包含其他的模版文件使用include标签,标签用法: {include file='模版文件1,模版文件2,...' /} 包含的模板文件中不能再使用模板布局或者模板继承。 使用模版表达式 模版表达式的定义规则为:模块@控制器/操作 例如: {include file="public/header" /} // 包含头部模版header {include file="public/