FFmpeg не может работать на каком-то устройстве Android
Я работаю в проекте обработки видео, и теперь я использую библиотеку ffmpeg в Android. Я сталкиваюсь со странной проблемой с Asus Zenphone 4 T00L (или все устройства x86, я только что протестировал в этом телефоне x86). При запуске команды в проекте приложение всегда вылетает:
03-30 15:08:18.461 21068-21068/com.paditech.videa I/FFmpeg: Loading FFmpeg for armv7-neon CPU
03-30 15:08:18.781 21068-21068/com.paditech.videa I/System.out: Success........
03-30 15:26:12.933 21068-21068/com.paditech.videa E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 59
03-30 15:26:12.933 21068-21068/com.paditech.videa E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 63
03-30 15:26:15.913 21068-21068/com.paditech.videa D/VideoActivity: onDestroy
03-30 15:26:18.993 21068-21068/com.paditech.videa I/FFmpeg: Loading FFmpeg for armv7-neon CPU
03-30 15:26:19.263 21068-21068/com.paditech.videa I/System.out: Success........
03-30 15:26:42.583 21068-21184/com.paditech.videa D/FFmpeg: Running publishing updates method
03-30 15:26:42.583 21068-21068/com.paditech.videa E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 59
03-30 15:26:42.583 21068-21068/com.paditech.videa E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 85
03-30 15:26:42.683 21068-21068/com.paditech.videa D/VideoActivity: /data/data/com.paditech.videa/files/ffmpeg[1]: syntax error: '�4�' unexpected
03-30 15:26:42.683 21068-21068/com.paditech.videa D/VideoActivity: /data/data/com.paditech.videa/files/ffmpeg[1]: syntax error: '�4�' unexpected
Во-первых, я думаю, что проблема в библиотеке ffmpeg. Поэтому я создал тестовый модуль с простым действием, просто загрузите и запустите команду, и проблем нет.
Во-вторых, я боюсь, что приложение не может загрузить версию ffmpeg, потому что в моем журнале это armv7-neon, хотя и x86 (в моем тестовом модуле он отображал x86). И в соответствии с моими результатами поиска, может быть приложение внешней библиотеки заставит использовать abi arm (Build.CPU_API="armv7"). Поэтому я пытаюсь удалить всю библиотеку в Gradle в модуле Test и обнаружил библиотеку. Но проверьте в aar файле библиотеки, он поддерживает все x86 и arm. Но после удаления приложение все равно падает с тем же журналом. И как ни странно, тестовый модуль althogh регистрируется как arm, но он все равно будет работать успешно (Внешний вопрос: зачем добавлять библиотеку jp.wasabeef: преобразования picasso делают системный регистр как armv7, хотя это x86)
Наконец, я думаю, что проблема в команде. Но после отладки я использую ту же команду для тестового модуля, но она все еще успешна. Теперь я все еще застрял с этим. Может ли кто-нибудь помочь мне решить это. Благодарю. Вот мой демо-код:
String input = "/storage/emulated/0/Videa/Video/VIDEO_20160122_160020.mp4";
String output = "/storage/emulated/0/Videa/Audio/AUDIO_20160330_142501.wav";
String[] command = {
"-y",
"-i",
input,
"-vn",
"-f",
"wav",
output
};
FFmpeg ffmpeg = FFmpeg.getInstance(getApplicationContext());
try {
ffmpeg.execute(command, new ExecuteBinaryResponseHandler() {
@Override
public void onSuccess(String message) {
super.onSuccess(message);
System.out.println("Success " + message);
}
@Override
public void onFailure(String message) {
super.onFailure(message);
System.out.println("Failure " + message);
}
});
} catch (Exception e) {
e.printStackTrace();
}
А вот команда Failed:
ArrayList<String> cmd = new ArrayList<String>();
cmd.add("-y");
cmd.add("-i");
cmd.add(input);
cmd.add("-vn");
cmd.add("-f");
cmd.add("wav");
cmd.add(output);
String[] result = new String[cmd.size()];
return cmd.toArray(result);