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);

0 ответов

Другие вопросы по тегам