ffmpeg 인스턴스가 싱글턴이라 그 전 작업이 끝나지 않았는데 작업을 해서 일까요...?
=> "FFmpeg command is already running, you are only allowed to run single command at a time" 에 설명 되어 있듯.. 동시에 수행이 안되게 구현 되어 있습니다.
FFmpeg.java 파일을 보면,
@Override
public void execute(Map<String, String> environvenmentVars, String[] cmd, FFmpegExecuteResponseHandler ffmpegExecuteResponseHandler) throws FFmpegCommandAlreadyRunningException {
if (ffmpegExecuteAsyncTask != null && !ffmpegExecuteAsyncTask.isProcessCompleted()) {
throw new FFmpegCommandAlreadyRunningException("FFmpeg command is already running, you are only allowed to run single command at a time");
}
와 같이 되어 있는게, ffmpegExecuteAsyncTask 의 isProcessCompleted 가 false이면, 강제로 Exception을 발생하게 만들어둔 듯 합니다.
여기를 수정해도 Singleton 방식이라. 다른 곳에서 오류가 발생할 수도 있구요..
소스가 공개 된 코드니 문제가 되는 부분과 Singleton 방식이 아닐때도 동작되게 수정하는 것도 가능하겠지만,
shell 명령어 방식으로 처리하는 경우 shell 동작이 끝나야 다음 shell명령어를 처리 할 수 있을테니. 사용하시는 시나리오를 100% 대응 하실 수 있을진 의문이네요.
ffmpeg shell 명령어가 아닌, ffmpeg api를 사용하여 동작하는 방식으로 구조 전환도 고려 해 보셔야 할 듯 합니다.
PS. ffmpeg-android-java 는 GPLv3라 사용하시는 모든 소스 전부 공개 해야 라이센스 위반이 되지 않는데. 상용코드로 사용하실 수 있을지 의문입니다.