支持在数据流中使用多种元数据类型

对于使用两种不同类型元数据的数据流,您可能需要根据播放器实现情况进行额外的配置设置。一个流可以包含多种类型的元数据。IMA SDK 会向视频流添加元数据,以便从媒体中检索广告信息。例如,SCTE-35 是一种常见的第二元数据类型。

对于使用 Media3 ExoPlayer v1.6 或更高版本的应用,默认情况下会处理具有两种元数据类型的视频流。

对于使用低于 v1.6 的 ExoPlayer 版本的应用,您必须向 ExoPlayer 实现添加额外的 MetadataRenderer 实例。以下示例添加了第二个 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();;