Utilizzo dell'applicazione WritingMinds/ffmpeg-android-java.java.io.IOException: Errore nell'esecuzione di exec() Directory di lavoro: null Ambiente: null
Ecco il mio codice
loadFFmpeg();
String cmd="ffmpeg -i /storage/emulated/0/media/audio/a.mp3 -i /storage/emulated/0/recording.3gp -filter_complex \"[0:a][1:a]amerge=inputs=2[aout]\" -map \"[aout]\" " + outputFile;
executeFFmpeg(cmd.split(" "));
e
private void loadFFmpeg() {
FFmpeg ffmpeg = FFmpeg.getInstance(MainActivity.this.getApplicationContext());
try {
ffmpeg.loadBinary(new LoadBinaryResponseHandler() {
@Override
public void onStart() {}
@Override
public void onFailure() {}
@Override
public void onSuccess() {}
@Override
public void onFinish() {}
});
} catch (FFmpegNotSupportedException e) {
// Handle if FFmpeg is not supported by device
}
}
private void executeFFmpeg(String[] cmd)
{
/*String workFolder = getApplicationContext().getFilesDir() + "/ffmpeg";
String environment = Environment.getExternalStorageDirectory().getAbsolutePath();
Map<String, String> map = new HashMap<String, String>();
map.put("Working Directory", workFolder);
map.put("Environment",environment);*/
FFmpeg ffmpeg = FFmpeg.getInstance(MainActivity.this.getApplicationContext());
try {
// to execute "ffmpeg -version" command you just need to pass "-version"
ffmpeg.execute(cmd, new ExecuteBinaryResponseHandler() {
@Override
public void onStart() {}
@Override
public void onProgress(String message) {}
@Override
public void onFailure(String message) {}
@Override
public void onSuccess(String message) {}
@Override
public void onFinish() {
stop.setEnabled(false);
play.setEnabled(true);
}
});
} catch (FFmpegCommandAlreadyRunningException e) {
// Handle if FFmpeg is already running
}
}
ma sto ottenendo seguente errore
6784-6962/com.flipartstudio.playandrecord E/FFmpeg: eccezione durante cercando di eseguire: [Ljava.lang.String; @ 41803270 java.io.IOException: errore nell'esecuzione di exec(). Comando: [/data/data/com.flipartstudio.playandrecord/files/ffmpeg,/system/bin/ls, -l, /data/data/com.example.foo/files/ffmpeg] Directory di lavoro: null Ambiente: null a java.lang.ProcessManager.exec (ProcessManager.java:211) a java.lang.Runtime.exec (Runtime.java:168) a java.lang.Runtime.exec (Runtime.java:123) a com.github.hiteshsondhi88.libffmpeg.ShellCommand.run (ShellCommand.java:10) a com.github.hiteshsondhi88.libffmpeg.FFmpegExecuteAsyncTask.doInBackground (FFmpegExecuteAsyncTask.java:38) a com.github.hiteshsondhi88.libffmpeg.FFmpegExecuteAsyncTask. doInBackground (FFmpegExecuteAsyncTask.java:10) su android.os.AsyncTask $ 2.call (AsyncTask.java:287) su java.util.concurrent.FutureTask.run (FutureTask.java:234) su android.os.AsyncTask $ SerialExecutor $ 1.run (AsyncTask.java:230) su java.util.concurrent .ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1080) a java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:573) a java.lang.Thread.run (Thread.java:856) causata da : java.io.IOException: nessun file o directory in java.lang.ProcessManager.exec (metodo nativo) in java.lang.ProcessManager.exec (ProcessManager.java:209) in java.lang.Runtime.exec (Runtime.java:168) in java.lang.Runtime.exec (Runtime.java:123) in com.github.hiteshsondhi88.libffmpeg.ShellCommand.run (ShellCommand.java:10) in com.github.hiteshsondhi88. libffmpeg.FFmpegExecuteAsyncTask.doInBackground (FFmpegExecuteAsyncTask.java:38) a com.github.hiteshsondhi88.libffmpeg.FFmpegExecuteAsyncTask.doInBackground (FFmpegExecuteAsyncTask.java:10) a android.os.AsyncTask $ 2.call (AsyncTask.java:287) a java.util.concurrent.FutureTask.run (FutureTask.java:234) su android.os.AsyncTask $ SerialExecutor $ 1.run (AsyncTask.java:230) su java.util.concurrent.ThreadPoolExecutor .runWorker (ThreadPoolExecutor.java:1080) su java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:573) su java.lang.Thread.run (Thread.java: 856)
Ho anche aggiunto
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.STORAGE" />