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

对于使用两种不同类型的元数据的串流,您可能需要进行额外的配置设置,具体取决于您的播放器实现。一个数据流可以包含多种类型的元数据。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();;