- Почему я не могу получить доступ к локальным файлам в демонстрационном приложении?
- Почему экспорт не удается на конкретном устройстве?
- Поддерживает ли Transformer преобразование (или запись) удаленных медиафайлов?
- Поддерживает ли трансформатор входной сигнал 8 кГц?
- Как Transformer связан с транскодированием медиаконтента, совместимым с различными платформами?
- Как можно уменьшить задержку экспорта или увеличить пропускную способность?
Почему я не могу получить доступ к локальным файлам в демонстрационном приложении?
Ограниченное использование хранилища, начиная с 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()
Java
new Transformer.Builder(context).setMaxDelayBetweenMuxerSamplesMs(C.TIME_UNSET).build();
Передача параметра C.TIME_UNSET полностью исключает тайм-аут, но если ваше приложение работает на чипсетах, где MediaCodec может зависать, возможно, вам стоит установить больший ненулевой тайм-аут.
Поддерживает ли трансформатор входной сигнал 8 кГц?
Transformer реализован независимо от формата, поэтому он не ограничивает обработку видео 8K, но аппаратные возможности устройства могут означать, что экспорт не удастся. Например, даже на устройствах, способных захватывать 8K, может оказаться невозможным декодирование и повторное кодирование видео 8K из-за превышения доступных аппаратных ресурсов кодека или оперативной памяти.
Как Transformer связан с транскодированием медиаконтента, совместимым с различными платформами?
Функция транскодирования совместимых медиафайлов , доступная в Android 12 (уровень API 31), позволяет преобразовывать медиафайлы длительностью до одной минуты в форматы, поддерживаемые приложением. Если вы включите эту функцию, чтение медиафайла в несовместимом формате приведет к его транскодированию по запросу, а результат будет кэширован для последующих операций чтения.
Transformer также поддерживает преобразование форматов , но это доступно в виде вспомогательной библиотеки, и приложение полностью контролирует процесс транскодирования.
Как можно уменьшить задержку экспорта или увеличить пропускную способность?
Transformer использует MediaCodec для аппаратного ускорения декодирования и кодирования, а также OpenGL для обработки видеокадров. На основе наших измерений на типичных устройствах, ограничивающим фактором пропускной способности Transformer является пропускная способность аппаратного кодировщика MediaCodec для сценариев использования без ресурсоемкой обработки эффектов. Вероятно, это повлияет и на другие реализации аналогичным образом. Например, функция транскодирования, совместимая с платформой, демонстрирует аналогичную производительность, как и Transformer.
Функция предварительного просмотра в демонстрационном приложении значительно снижает пропускную способность, поэтому отключите эту функцию при тестировании с использованием релизной сборки демонстрационного приложения, чтобы получить реалистичное представление о производительности.