在当前位置ExoPlayer2之前保留一些缓冲区

问题描述

我在应用程序中使用Exoplayer2作为媒体播放器来播放Hls(.m3u8)媒体, 我根据需要增加了最大和最小缓冲区,但我想在当前播放位置之前保留一些缓冲区(15秒),因为我增加了10秒的后退和前进按钮 前进按钮可以正常工作,因为我有5分钟的缓冲空间,但是每次我单击后退按钮时,即使该区域之前已经缓冲,并且前面的所有缓冲空间(5分钟)都被清除,播放器也会开始缓冲。 我试过了 我创建了一个自定义加载控制器,该控制器实现了Load Control,并具有back_buffer_duration和keepBackBufferFromkeyFrame:

 public Customloadcontrol(
        DefaultAllocator allocator,int minBufferMs,int maxBufferMs,int bufferForPlaybackMs,int bufferForPlaybackAfterRebufferMs,int targetBufferBytes,boolean prioritizeTimeOverSizeThresholds,PriorityTaskManager priorityTaskManager,int backBufferDurationMs,boolean retainBackBufferFromKeyframe

) {
    this.allocator = allocator;
    minBufferUs = minBufferMs * 1000L;
    maxBufferUs = maxBufferMs * 1000L;
    bufferForPlaybackUs = bufferForPlaybackMs * 1000L;
    bufferForPlaybackAfterRebufferUs = bufferForPlaybackAfterRebufferMs * 1000L;
    targetBufferBytesOverwrite = targetBufferBytes;
    this.prioritizeTimeOverSizeThresholds = prioritizeTimeOverSizeThresholds;
    this.priorityTaskManager = priorityTaskManager;
    this.backBufferDurationUs = C.msToUs(bufferForPlaybackMs);
    this.backBufferDurationMs=backBufferDurationMs;
    this.retainBackBufferFromKeyframe=retainBackBufferFromKeyframe;
}

.........覆盖的方法

 @Override
public long getBackBufferDurationUs() {
    return backBufferDurationUs;
}

@Override
public boolean retainBackBufferFromKeyframe() {
    return retainBackBufferFromKeyframe;
}

然后进入我的播放器活动:

BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
TrackSelection.Factory videoTrackSelectionFactory = new 
AdaptiveTrackSelection.Factory(bandwidthMeter);

Customloadcontrol customloadcontroler = new Customloadcontrol(
                   new DefaultAllocator(true,C.DEFAULT_BUFFER_SEGMENT_SIZE),360000,600000,1000,1500,DEFAULT_TARGET_BUFFER_BYTES,DEFAULT_PRIORITIZE_TIME_OVER_SIZE_THRESHOLDS,15000,true);
 DefaultTrackSelector trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory);
    player = ExoPlayerFactory.newSimpleInstance(context,trackSelector,customloadcontroler);

但是当我按下向后10秒按钮时,它似乎无法正常工作,播放器清除了所有缓冲的媒体并再次开始缓冲,因此请您多多帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)