如何与ffmpeg多线程?

时间:2018-07-07 13:31:14

标签: android multithreading ffmpeg android-ffmpeg

我正在尝试拆分,转换和合并音频。我使用了writingMinds FFmpeg Android版。但是长时间播放音频会花费很多时间。

为了加快速度,我尝试在具有8个核心的手机上使用“ thread -4”命令,但并没有提高性能。

因此,我随后将音频分为4个部分(以使用4个线程),然后在单独的线程中调用FFmpeg.execute()进行多线程处理。但是FFmpeg库按顺序处理文件。 ffmpeg是否可以在4个线程中并行处理这4个部分?如果可以,怎么办?

更新
参见alex cohn's answer。 在这种情况下,也是由于FFmpegExecuteAsyncTask的调用方法,因为Asynctask类的execute方法仅允许在现代API中一次运行一个实例。 一种解决方法是使用此检查。

fruits = ["banana", "apple","mango"]

1 个答案:

答案 0 :(得分:2)

你是对的。该Java包装器确保对ffmpeg的所有调用都是顺序的。如果删除此工具并自己加载二进制文件,则可以并行运行多个ffmpeg进程。请注意,它们不是线程,而是成熟的进程,因此执行此操作的成本可能比您预期的高。