2

Androidアプリケーションでコマンドライン経由でFFMPEGを使用したい.この目的のために:

  1. 私はffmpeg libをクロスコンパイルし、libffmpeg.soを取得しました
  2. プロジェクトのファイルディレクトリにlibffmpeg.soとffmpeg実行可能ファイルを保存しました。

これは私が使用しているコードです:

public class FFMPEGActivity 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

3 に答える 3

1

あなたのコードは、ffmpeg 実行可能ファイルではなく、ライブラリを実行しようとしているようです。cmdを修正した後でも、libffmpeg.so をロードするには追加のトリックが必要になることに注意してください

手間を省くために、静的にリンクされたffmpeg実行可能ファイルを作成することをお勧めします。

于 2012-12-30T16:51:48.377 に答える
1

どうにかしてffmpeg実行可能ファイルをコンパイルし、それをファイルシステムのどこかに配置してから、ネイティブレイヤーからアクセスしない限り、これはうまくいかないと思います。ただし、通常、Dolphin Playerなどの android では libffmpeg API を使用します。

于 2012-09-18T08:16:48.130 に答える
0

ffmpegアクセスするすべてのファイルを内部カードに配置します (を介して取得しcontext.getDir("", 0)ます。これを行った後、を介して ffmpeg を実行できるようになりますexec()

ただし、一部のモデルはこれも実行を拒否します。

于 2012-12-30T12:57:59.303 に答える