有没有办法直接将大量广告响应传递给 androidx media3 exo 播放器,而不是传递 adTag url
下面是传递 adTag url 的示例
private AdsLoader getClientSideAdsLoader(MediaItem.AdsConfiguration adsConfiguration) {
// The ads loader is reused for multiple playbacks, so that ad playback can resume.
if (clientSideAdsLoader == null) {
clientSideAdsLoader = new ImaAdsLoader.Builder(/* context= */ this)
.build();
}
clientSideAdsLoader.setPlayer(player);
return clientSideAdsLoader;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
MediaSource.Factory mediaSourceFactory =
new DefaultMediaSourceFactory(this)
.setLocalAdInsertionComponents(this::getClientSideAdsLoader, /* adViewProvider= */ playerView);
player = new ExoPlayer.Builder(this)
.setMediaSourceFactory(mediaSourceFactory)
.build();
playerView.setPlayer(player);
MediaItem mediaItem =
new MediaItem.Builder()
.setUri("<DASH URI>")
.setAdsConfiguration(
new MediaItem.AdsConfiguration.Builder(Uri.parse("vast ad url")).build())
.build();
// Set the media item to be played.
player.setMediaItem(mediaItem);
// Prepare the player.
player.prepare();
// Start the playback.
player.play();
}
我浏览了 androidx.media3 exo 播放器的文档,但找不到任何方法。对于exo播放器2.11,我们可以通过如下
ImaAdsLoader.Builder builder = new ImaAdsLoader.Builder(mContext);
ImaSdkSettings imaSdkSettings = ImaSdkFactory.getInstance().createImaSdkSettings();
builder = builder.setImaSdkSettings(imaSdkSettings);
ImaAdsLoader imaAdsLoader = builder.buildForAdsResponse(adResource);
是否可以通过 androidx media3 exo 播放器的相似性
String vmapXMLString = "<vmap:VMAP ........";
MediaItem mediaItem =
new MediaItem.Builder()
.setUri(<mpd_url>)
.setAdsConfiguration(
new MediaItem.AdsConfiguration.Builder(Util.getDataUriForString("text/xml",vmapXMLString)).build())
.build();