Запуск ExtractDecodeEditEncodeMuxTest вне тестового случая на Android

1

Я пытаюсь добавить функциональность для извлечения, декодирования, редактирования, кодирования и мультиплексирования видео на Android. Поэтому я нашел очень полезную реализацию, которая является частью Android CTS ExtractDecodeEditEncodeMuxTest. К сожалению, код работает только в том случае, если он выполняется как часть тестового файла. Я попытался выполнить его из обычной активности и получить:

E/ExtractDecodeEditEncodeMuxTest (18781): java.lang.IllegalStateException: Не удалось остановить мультиплексор

W/System.err(18781): java.lang.RuntimeException: Ожидаемый срок службы фреймов W/System.err(18781): at... OutputSurface.awaitNewImage(OutputSurface.java:216)

Любые идеи, почему выходная поверхность не получает фреймы?

UPDATE: Вот файлы журнала для рабочего тестового примера и неработоспособной реализации. Код для обоих точно такой же. Единственное различие заключается в том, что рабочий является AndroidTestCase, а другой работает в приложении в IntentService.

Кажется, что все это останавливает извлечение и декодирование после примерно 6 кадров. Любые идеи?

Рабочий тестовый файл Logoutput

Нерабочий выход журнала

Теги:
media
mediacodec
cts

2 ответа

1
Лучший ответ

Благодаря fadden, я смог решить эту проблему. Теперь я использую услугу намерения и запускаю поток без петлителя, который отлично работает.

Для запуска кода в службе Android это означает, что поток обертки должен запускаться из пользовательского потока. Запуск потока в потоке, вероятно, не самое лучшее решение, но оно фактически решает проблему.

1

Вероятно, вам нужно запустить его в отдельном потоке

    public static void runTest(ExtractDecodeEditEncodeMuxTest test) throws Throwable {
        test.setOutputFile();
        TestWrapper wrapper = new TestWrapper(test);
        Thread th = new Thread(wrapper, "codec test");
        th.start();
        th.join();
        if (wrapper.mThrowable != null) {
            throw wrapper.mThrowable;
        }
    }
  • 0
    Привет, все это уже работает в отдельном потоке.
  • 0
    Вы начинаете отдельную тему из основной темы деятельности?
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню