Поиск неисправностей


Почему я не могу получить доступ к локальным файлам в демо-приложении?

Применение ограниченного хранилища в Android 11 (уровень API 30) предотвращает прямой доступ к файловой системе. Для ручного тестирования во время разработки можно получить доступ к локальным файлам, добавив разрешение на управление внешним хранилищем в манифесте демонстрационного приложения:

<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>

Затем предоставьте разрешение через adb:

adb shell appops set --uid androidx.media3.demo.transformer \
    MANAGE_EXTERNAL_STORAGE allow

Почему экспорт не удается выполнить на конкретном устройстве?

Пожалуйста, сообщите о проблеме в систему отслеживания проблем Media3 , предоставив достаточно информации для ее воспроизведения. В библиотеку можно добавить обходные пути для проблем, связанных с конкретным устройством, чтобы со временем улучшить совместимость.

Поддерживает ли Transformer преобразование (или запись) удаленных носителей?

Transformer поддерживает удаленные прогрессивные потоки, включая контейнеры медиафайлов, такие как MP4.

В очень плохих сетевых условиях экспорт может завершиться неудачей, поскольку слишком длительная буферизация удаленных носителей запускает проверки мультиплексора, предназначенные для определения зависания конвейера. Вы можете переопределить поведение по умолчанию, установив maxDelayBetweenMuxerSamplesMs в Transformer.Builder :

Котлин

Transformer.Builder(context)
    .setMaxDelayBetweenMuxerSamplesMs(C.TIME_UNSET)
    .build()

Ява

new Transformer.Builder(context)
    .setMaxDelayBetweenMuxerSamplesMs(C.TIME_UNSET)
    .build();

Передача C.TIME_UNSET полностью удаляет тайм-аут, но если ваше приложение работает на наборах микросхем, на которых MediaCodec может зависать, вы можете установить больший ненулевой тайм-аут.

Поддерживает ли Transformer вход 8k?

Transformer реализован независимо от формата, поэтому он не ограничивает обработку видео 8K, но аппаратные возможности устройства могут привести к тому, что экспорт не удастся. Например, даже на устройствах, которые могут захватывать 8K, может быть невозможно декодировать и перекодировать видео 8K из-за превышения доступного аппаратного кодека или ресурсов ОЗУ.

Как Transformer относится к транскодированию мультимедиа, совместимому с платформой?

Совместимое перекодирование мультимедиа — это функция платформы Android, начиная с Android 12 (уровень API 31), которая преобразует мультимедиа продолжительностью до одной минуты в форматы, поддерживаемые приложением. Если вы дадите согласие на использование этой функции, чтение медиафайла в несовместимом формате приведет к его перекодированию по требованию, а результат будет кэширован для последующих операций чтения.

Transformer также поддерживает преобразование формата , но он доступен в виде вспомогательной библиотеки, и приложение имеет полный контроль над операцией перекодирования.

Как я могу уменьшить задержку экспорта или увеличить пропускную способность?

Transformer использует MediaCodec для аппаратного ускорения декодирования и кодирования, а также OpenGL для обработки видеокадров. Согласно нашим измерениям на типичных устройствах, ограничивающим фактором производительности Transformer является пропускная способность аппаратного кодера MediaCodec для случаев использования без обработки тяжелых эффектов. Вероятно, это повлияет на другие реализации таким же образом. Например, функция транскодирования, совместимая с платформой, имеет производительность, аналогичную Transformer.

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