我们正在使用Exoplayer同时在屏幕上呈现多个视频。当我们播放单个视频时,没有问题。一旦我们使用多个,ExoPlayer就会停止清理anon_inode:sync_fence的文件inode句柄,我认为这是针对Vsync的。
每个播放的视频至少会生成一个sync_fence inode文件,并且它们会在打开文件过多的情况下快速超载系统。
代码示例:
final PlayerView pv = getExoViewForZoneNum(zone_num);
SimpleExoPlayer pl = getSimplePlayerForZoneNum(zone_num);
pv.hideController();
pv.setControllerVisibilityListener(new PlaybackControlView.VisibilityListener() {
@Override
public void onVisibilityChange(int i) {
if(i == 0) {
pv.hideController();
}
}
});
pl= ExoPlayerFactory.newSimpleInstance(
new DefaultRenderersFactory(context, null, DefaultRenderersFactory.EXTENSION_RENDERER_MODE_OFF),
new DefaultTrackSelector(),
new DefaultLoadControl());
pv.setPlayer(pl);
pv.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FILL);
pl.addListener(new PlayerEventListener());
pl.setPlayWhenReady(true);
MediaSource mediaSource = buildMediaSource(uri);
pl.prepare(mediaSource, true, false);
我们的onDestroy确实在每个实例上执行.stop()和.release(),但问题仍然存在。
有什么建议吗?