ExoPlayer基础使用

作者: 重新起步 | 来源:发表于2023-02-07 18:59 被阅读0次

参考文档:

github官网
github官网开发文档
入门
媒体类型
高级主题

源码分析:

exoplayer-core:核心功能(必需)。
exoplayer-dash:支持DASH内容。
exoplayer-hls:支持HLS内容。
exoplayer-smoothstreaming:支持SmoothStreaming内容。
exoplayer-ui:用于ExoPlayer的UI组件和资源。
exoplayer的库总共分上面5种,我们先看exoplayer-ui,exoplayer-core
这两个好理解一点,很多人应该和我一样,不是很理解另外三个是干嘛的;

三个比较关键的类:

三者之间的关系如上


image.png

从PlayerView出发来看,下面舒PlayerView的代码


image.png

PlayerView:用于关联PlayerControlView,SurfaceView/TextureVIew, Player
PlayerControlView:exoplayer默认的控制器,包含播放,暂停,进度条展示
Player:播放器,实际去解码并播放视频资源的
surfaceView:显示器,可以是SurfaceView也可以是TextureView

surfaceView分析:

image.png

从上图可以看出,默认是创建一个SurfaceView,
surfaceType通过xml指定,如下:


image.png

最后在和player进行绑定


image.png

PlayerView分析

image.png

从构造方法可以看出,默认加载layout.exo_player_view这个布局,如果


image.png

在xml中指定了其他layout,则会加载指定的布局


image.png
exo默认的布局exo_player_view中是没有exo_control这个id的,所以一般是需要new PlayerControlView布局的;

PlayerControlView分析:

image.png
PlayerControlView默认使用exo_player_control_view布局;
image.png
从布局的id也大概能猜到她的作用是控制视频翻页,循环,随机,播放,暂停,再看代码:
image.png
通过代码可以看出,每一个id都做了判空处理,所以我们想自定义一个控制界面,只需要保持功能按钮的id和exo_player_control_view一致,ui切换即可,非常方便;

player分析

image.png
SimpleExoPlayer继承BasePlayer类实现Player接口,也是我们的主角;
播放器一般需要做的事情是对视频资源进行加载,编解码,播放;

Player提供了对MediaItem的操作接口
ExoPlayer提供了对MediaSource的操作接口
SimpleExoPlayer即实现了对MediaItem也实现了对MediaSource的操作

MediaItem: 播放的单元,一般是一个文件或url
MediaSource: 代表可以被ExoPlayer播放的媒体,一般关联TimeLine用于定义媒体的结构
此处的解释中,MediaSource多了一个媒体结构,这个功能非常重要;

相关文章

网友评论

    本文标题:ExoPlayer基础使用

    本文链接:https://www.haomeiwen.com/subject/zprfkdtx.html