主要功能代码
1、⾸先需要⼀个关联类,⽤来管理页⾯上的视频播放器和显⽰视频画⾯的view以及视频播放控制器的管理类/**
* @desciption 管理页⾯上的视频播放器
*/
public class PageListPlay {
/**
* 播放器核⼼API类
*/
public SimpleExoPlayer exoPlayer;
public PlayerView playerView;
public PlayerControlView controlView;
/**视频播放器十大排名
* 代表正在播放的视频 url,并⽤来判断 exoPlayer 之前播放的url和即将要播放的url是否是同⼀个媒体资源
* 如果是同⼀个只需要恢复继续播放即可,反正创建新的 MediaSource 给 exoPlayer 去播放
*/
public String playUrl;
public PageListPlay() {
Application application = Application();
//创建exoplayer播放器实例
exoPlayer = new SimpleExoPlayer.Builder(application,
//视频每⼀这的画⾯如何渲染,实现默认的实现类
new DefaultRenderersFactory(application))
//测量播放过程中的带宽,如果不需要,可以为null
.setBandwidthMeter(new DefaultBandwidthMeter.Builder(application).build())
//视频的⾳视频轨道如何加载,使⽤默认的轨道选择器
.setTrackSelector(new DefaultTrackSelector(application))
//视频缓存控制逻辑,使⽤默认的即可
.setLoadControl(new DefaultLoadControl())
.build();
//加载咱们布局层级优化之后的能够展⽰视频画⾯的View
playerView = (PlayerView) LayoutInflater.from(application).inflate(R.layout.layout_exo_player_view,
null, false);
//加载咱们布局层级优化之后的视频播放控制器
controlView = (PlayerControlView) LayoutInflater.from(application).inflate(R.layout.layout_exo_player_contorller_view,                null, false);
//把播放器实例和 playerView,controlView相关联
//如此视频画⾯才能正常显⽰,播放进度条才能⾃动更新
playerView.setPlayer(exoPlayer);
controlView.setPlayer(exoPlayer);
}
public void release() {
if (exoPlayer != null) {
exoPlayer.setPlayWhenReady(false);
exoPlayer.stop(true);
exoPlayer = null;
}
if (playerView != null) {
playerView.setPlayer(null);
playerView = null;
}
if (controlView != null) {
controlView.setPlayer(null);
controlView = null;
}
}
/**
* 切换与播放器 exoplayer 绑定的 exoplayerView。⽤于页⾯切换视频⽆缝续播的场景
*
* @param newPlayerView

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。