在android中尝试通过命令行运行ffmpeg时出现异常

在android中尝试通过命令行运行ffmpeg时出现异常,android,command-line,ffmpeg,Android,Command Line,Ffmpeg,我想在android应用程序中通过命令行参数使用ffmpeg。为此: 我交叉编译了ffmpeg库,得到了libffmpeg.so 我已将libffmpeg.so存储在应用程序的文件目录中 这是我正在使用的代码: public class MainActivity extends Activity { Process p; @Override public void onCreate(Bundle savedInstanceState) { super.

我想在android应用程序中通过命令行参数使用ffmpeg。为此:

  • 我交叉编译了ffmpeg库,得到了libffmpeg.so
  • 我已将libffmpeg.so存储在应用程序的文件目录中
  • 这是我正在使用的代码:

    public class MainActivity extends 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
    

    请告诉我如何解决此问题。提前谢谢。

    我猜您正在尝试使用此Linux命令运行.so文件:

    /data/data/com.example.ffmpegnew/files/libffmpeg.so-i mnt/sdcard/music/baba.mp4 mnt/sdcard/music/outfile.mp4

    您实际上是指运行ffmpeg可执行文件(请参阅man ffmpeg)

    ffmpeg-i mnt/sdcard/music/baba.mp4 mnt/sdcard/music/outfile.mp4

    我认为第一步可能是让您的命令,然后让您的代码片段在常规Linux上运行,然后将其移动到Android

    注意:在任何情况下,“mnt/…”中缺少前导“/”;应为“/mnt/…”


    PPS。其他讨论可能会有所帮助

    请帮助我,先生/女士您能找到答案吗?是的,先生,我想运行ffmpeg可执行文件,就像我们在windows的cmd上运行它一样。我想先生,在androidPlease中,必须有某种方法使用命令行运行ffmpeg。请检查上面答案中的链接:一些人显然在这方面取得了一些成功:这对我的情况没有帮助,先生。无论如何,我认为要进一步深入这条路,您需要:1)构建(静态?)可执行文件;2) 至少修复前导“/”。然后运行代码,从第一个参数中删除前导的“lib”。哦,顺便说一句,确保二进制文件(可执行文件,lib)真正部署到该目录。