2

Androidアプリケーションでコマンドライン引数を介してffmpegを使用したい。この目的のために:

  1. ffmpeg libをクロスコンパイルし、libffmpeg.soを取得しました
  2. アプリのファイルディレクトリに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

この問題の解決方法を教えてください。よろしくお願いします。

4

1 に答える 1

1

この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に移動することだと思います。

PS。いずれにせよ、先頭の「/」は「mnt/...」から欠落しています。「/mnt/...」である必要があります

PPS。そして他の議論が役立つかもしれません1

于 2012-09-17T08:54:17.857 に答える