【问题标题】:executing ffmpeg command with getRuntime().exec() command使用 getRuntime().exec() 命令执行 ffmpeg 命令
【发布时间】:2015-05-13 02:41:30
【问题描述】:

我想直接在 android 上运行 ffmepg 命令。 一个简单的命令

ffmpeg -i vid.mp4 out.mp4

现在的问题是我搜索了互联网,发现最好的 android ffmpeg 可以在这里找到

http://bambuser.com/opensource

我已经下载并阅读了自述文件并编译了它。该文件夹是ffmpeg。我把它保存在<--projectfolder-->/ffmpeg/

在ffmpeg文件夹中有一个ffmpeg可执行文件,叫做ffmpeg文件夹

我已将其复制到文件夹中并运行此命令

  try {    

    Toast.makeText(this, "Working", Toast.LENGTH_SHORT).show();

    Process p = Runtime.getRuntime().exec("/data/data/com.koder.testffmpeg/files/ffmpeg -i /sdcard/vid.mp4 /sdcard/out.mp4");


    } catch (IOException e) {

    txt.setText(e.toString());

    Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show();

    e.printStackTrace();

    }

根据这个链接 How do I reduce the video size captured by the default camera using FFMPEG in Android?

但它仍然不起作用总是异常我不知道出了什么问题 有人可以帮我解决这个问题吗

java.io.IOException: Error running exec(). Command:[/data/data/com.koder.testffmpeg/files/ffmpeg -i /sdcard/vid.mp4 /sdcard/out.mp4] Working Directory: null Environment:null

【问题讨论】:

  • 您遇到了什么异常?请发布日志详细信息。
  • java.io.IOException:运行 exec() 时出错。命令:[/data/data/com.koder.testffmpeg/files/ffmpeg -i /sdcard/vid.mp4 /sdcard/out.mp4] 工作目录:null 环境:null
  • 问题是你的 ffmpeg 命令在 android 文件夹中可能没有真正标记为 executable。使用“adb shell”连接,然后“ls -l /data/data/com.koder.testffmpeg/files/ffmpeg”看看是否真的可以执行
  • 你能找到解决方案吗?...我采用了同样的方法,它给出了一个 IO 异常。你能帮帮我吗?
  • 同样的问题,找不到解决办法!!

标签: android ffmpeg exec


【解决方案1】:

您应该使用getBaseContext().getApplicationInfo().nativeLibraryDir 而不是"/data/data/com.example.ffmpegnew/files/"

【讨论】:

    【解决方案2】:

    ffmpeg 授予可执行权限,如下所示:

    chmod 700 ffmpeg
    

    【讨论】:

      【解决方案3】:

      试试这个:

      Process proc = null;
      ProcessBuilder pb = new ProcessBuilder();
      proc = pb.command("String...yourCommand")
                          .redirectErrorStream(true).start();
      BufferedReader bReader = new BufferedReader(new InputStreamReader(
                          proc.getInputStream()));
      

      此代码适用于我在 android 中获取系统唤醒锁详细信息。可能对您有用。

      【讨论】:

      • 它不起作用,出现很多错误。我怎样才能在我的项目文件夹中使用 ffmpeg 文件。还有一件事,这个文件是否能够在 linux 上运行,因为我已经尝试过了,但它没有工作
      【解决方案4】:

      你可以像这样组合上面的答案:

       Process p = Runtime.getRuntime().exec("chmod 700 "+getBaseContext().getApplicationInfo().nativeLibraryDir + "/ffmpeg ...");
      

      【讨论】:

        猜你喜欢
        • 2015-07-13
        • 2011-11-06
        • 2012-12-14
        • 2012-08-18
        • 1970-01-01
        • 2014-11-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多