使用FFMPEG库时,IntentService中的illegalStateException

时间:2017-01-19 15:09:27

标签: android illegalstateexception android-ffmpeg

我使用意图服务使用 FFMPEG 库压缩少量视频文件,压缩后,使用FTP将这些文件存储在服务器上。所以,我开始一个线程等待 FFPEG execute()方法,直到它成功完成。

然后,我使用FTP将这些文件存储在服务器上。 工作正确完成,但最终返回illegalStateException

  

MessageQueue:处理程序(android.view.ViewRootImpl $ ViewRootHandler){8895619}在死线程上向处理程序发送消息

如果我有10个文件,则会返回10次此异常。 这个例外的原因可能是什么,我该如何避免呢。

这是我正在使用的处理程序:

            fFmpeg.execute(command, new ExecuteBinaryResponseHandler() {
            @Override
            public void onFailure(String s) {
                System.out.println(idx + "----------Failure: \n" + s.toString());
            }

            @Override
            public void onSuccess(String s) {
                System.out.println(idx+ "----------Success: \n" + s.toString());
            }

            @Override
            public void onProgress(String s) {
            }

            @Override
            public void onStart() {
                System.out.println(idx+ " started");
            }

            @Override
            public void onFinish() {
                totalProcessedFileCount++;
                System.out.println(idx + "*****************Finished "+ totalProcessedFileCount);
            }
        });

1 个答案:

答案 0 :(得分:0)

您可以尝试在单独的线程上运行处理程序。

HandlerThread handlerThread = new HandlerThread();
handlerThread.start();

并将处理程序附加到新线程

new ExecuteBinaryResponseHandler(mHandlerThread.getLooper());