我需要更改当前播放的剪辑的持续时间,以便插入其他剪辑。
我需要能够即时更新播放列表。这涉及更改当前播放的剪辑持续时间,插入一些其他剪辑(这些是广告),最后插入一个新的剪辑,这是第一个当前播放的剪辑的剩余部分。最后一个剪辑的起点是我们上次到达的位置。
我正在使用ClippingMediaSource对象,并将它们添加到ContactenatingMediaSource集合中。
ConcatenatingMediaSource mediaSource;
private ConcatenatingMediaSource buildMediaSources(final ClipData[] clipList)
{
ArrayList<MediaSource> sources = new ArrayList<MediaSource>();
DataSource.Factory manifestDataSourceFactory =
new DefaultHttpDataSourceFactory("ua");
DashChunkSource.Factory dashChunkSourceFactory =
new DefaultDashChunkSource.Factory(
new DefaultHttpDataSourceFactory("ua", BANDWIDTH_METER));
for (ClipData clip : clipList)
{
String url = clip.getDashManifestURL();
if (url == null)
{
url = clip.getHlsManifestURL();
}
MediaSource ms = new DashMediaSource.Factory(dashChunkSourceFactory,
manifestDataSourceFactory).createMediaSource(Uri.parse(url));
ClippingMediaSource cms = new ClippingMediaSource(ms, clip.getStartOffset(), clip.getStopOffset());
sources.add(cms);
}
ConcatenatingMediaSource cms = new ConcatenatingMediaSource();
cms.addMediaSources(sources);
return cms;
}
mediaSource = buildMediaSources(clipList);
m_player.prepare(mediaSource, true, false);
上面的代码在初始运行时有效,但是我不知道在播放同一剪辑时如何将第一个剪辑设置为不同的持续时间。第一个剪辑尚未达到我需要将其更改为的时间。