在android中通过命令行使用FFMPEG

时间:2012-09-18 07:24:37

标签: android command-line ffmpeg

我想在我的android应用程序中通过COMMAND LINE使用FFMPEG。为此目的:

  1. 我已经交叉编译了ffmpeg lib并获得了libffmpeg.so
  2. 我已将libffmpeg.so和ffmpeg存储在我项目的files目录中。
  3. 这是我正在使用的代码:

    公共类FFMPEGActivity扩展了Activity {

    Process p;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
            String[] cmd =new String[4];
        cmd[0]="/data/data/com.example.ffmpegnew/files/libffmpeg";
        cmd[1]="-i";
        cmd[2]="mnt/sdcard/music/baba.mp4";
        cmd[3]="mnt/sdcard/music/outfile.mp4";
    
        p = Runtime.getRuntime().exec(cmd,null, new File("/data/data/com.example.ffmpegnew/files"));
    
        }
        catch(Exception e)
        {
            System.out.println("exception"+e);
        }
    
    }
    

    }

    这是我得到的例外:

    09-17 13:47:01.679: I/System.out(3752): exceptionjava.io.IOException: Error running exec(). Command: [/data/data/com.example.ffmpegnew/files/libffmpeg.so, -i, mnt/sdcard/music/baba.mp4, mnt/sdcard/music/outfile.mp4] Working Directory: /data/data/com.example.ffmpegnew/files Environment: null
    

    请告诉我如何解决这个问题。谢谢。

3 个答案:

答案 0 :(得分:1)

我认为这不起作用,除非你以某种方式设法编译ffmpeg可执行文件,将它放在文件系统中的某个位置,然后通过本机层访问它。但通常情况下,他们在android中使用libffmpeg API,例如Dolphin Player

答案 1 :(得分:1)

您的代码似乎尝试运行库,而不是ffmpeg可执行文件。请注意,即使在修复 cmd 之后,您还需要额外的技巧来加载libffmpeg.so,因为Android加载程序不会从加载共享库。

我建议建立一个静态链接的 ffmpeg 可执行文件以避免麻烦。

答案 2 :(得分:0)

ffmpeg及其访问的所有文件放在内部卡上(通过context.getDir("", 0)获取。 执行此操作后,您将能够通过exec()运行ffmpeg。

然而,有些模型也会拒绝这样做。