Поддержка нескольких типов метаданных в потоках

Для потоков, использующих два разных типа метаданных, вам может потребоваться дополнительная настройка конфигурации в зависимости от реализации вашего проигрывателя. Поток может содержать несколько типов метаданных. IMA SDK добавляет метаданные в поток для извлечения рекламной информации из медиа. Например, SCTE-35 — это распространенный второй тип метаданных.

Для приложений, использующих Media3 ExoPlayer v1.6 или выше, по умолчанию обрабатываются потоки с двумя типами метаданных.

Для приложений, использующих версию ExoPlayer ниже v1.6, необходимо добавить дополнительный экземпляр MetadataRenderer в реализацию ExoPlayer. Следующий пример добавляет второй экземпляр MetadataRenderer для поддержки двух типов метаданных:

RenderersFactory defaultRenderersFactory = new DefaultRenderersFactory(context) {

  @Override
  protected void buildMetadataRenderers(Context context, MetadataOutput output,
      Looper outputLooper, @ExtensionRendererMode int extensionRendererMode,
      ArrayList<Renderer> out) {
    // Add a `MetadataRenderer` for each type of metadata. This example adds 2.
    out.add(new MetadataRenderer(output, outputLooper));
    out.add(new MetadataRenderer(output, outputLooper));
  }
};

new ExoPlayer.Builder()
    .setRenderersFactory(defaultRenderersFactory)
    .setMediaSourceFactory(mediaSourceFactory)
    .build();;