我正在尝试分割、转换和合并音频。我使用了writingMinds为Android构建的FFmpeg。但对于长时间的音频,它需要太长时间。
为了加速,我尝试在一部有8个核心的手机上使用“线程-4”命令,但没有改善性能。
所以我将音频分成4部分(使用4个线程),然后在多线程中调用FFmpeg.execute()。但是FFmpeg库会按顺序处理文件。是否可能让ffmpeg在4个线程中并行处理这4个部分?如果可以,怎么做? 更新
请参见alex cohn's answer。 在这种情况下,这也是由于FFmpegExecuteAsyncTask的调用方法,因为Asynctask类的execute方法在现代API中只允许同时运行一个实例。 解决方法是使用这些检查。
为了加速,我尝试在一部有8个核心的手机上使用“线程-4”命令,但没有改善性能。
所以我将音频分成4部分(使用4个线程),然后在多线程中调用FFmpeg.execute()。但是FFmpeg库会按顺序处理文件。是否可能让ffmpeg在4个线程中并行处理这4个部分?如果可以,怎么做? 更新
请参见alex cohn's answer。 在这种情况下,这也是由于FFmpegExecuteAsyncTask的调用方法,因为Asynctask类的execute方法在现代API中只允许同时运行一个实例。 解决方法是使用这些检查。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { // Android 3.0 to
// Android 4.3
// Parallel AsyncTasks are not possible unless using executeOnExecutor
ffmpegExecuteAsyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
} else { // Below Android 3.0
// Parallel AsyncTasks are possible, with fixed thread-pool size
ffmpegExecuteAsyncTask.execute();
}