Android视频播放器Exoplayer自定义
Posted dx我是大雄
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android视频播放器Exoplayer自定义相关的知识,希望对你有一定的参考价值。
一.背景
最近要用播放器播放视频,以前没怎么做过,但是听说过很多款第三方播放器,android系统是没有播放器,以前写过一个用surfaceview写的简易播放器,但是离商用还有很远的路,所以经过一番研究,我还是决定用谷歌的Exoplayer,至于原因请看下面
1.vitamio
官网地址:https://www.vitamio.org/
据说挺好用,但是要钱的,所以商用不行,貌似还不少,所以放弃
2.ijk
github地址:https://github.com/Bilibili/ijkplayer
B站的播放器
星星有10000多,应该挺好用,但是下面的商业权限太多,不知道能不能用,原因还有就是demo没跑起来
3.jiecao
github地址:https://github.com/lipangit/JieCaoVideoPlayer
星星快3000,简单易用,傻瓜式的,但是封装的太死,而且里面有些东西封装的不合理,貌似是基于ijk(以前)和Exoplayer(现在是)
4.exoplayer
github地址:https://github.com/google/ExoPlayer
项目中我用了这个,1.不要钱 2.里面提到了兼容性好,不用自己做 3.就是扩展性相对来说比较好,支持大部分音视频播放
二.怎么使用
(1).基本使用官网讲的很清楚,这里我就不赘述了
(2)开始讲讲自定义的过程吧,很简单的(开始我也以为很复杂,其实并不难)
这里我讲的版本是R.2.1.0
在这个自定义我做了
1.音量调节(seekbar,如何调节在我其他文章有,去看音量调节)
2.明暗度调节(用了seekbar,如何调节在我其他文章有,看我怎么做)
3.加载缩略图(需要自身后台接口支持)
4.图标的一些替换
5.横竖屏自适应(类似优酷,爱奇艺,看我怎么做)
6.还有一些细节的调整
SimpleExoplayerView.java
if (attrs != null)
TypedArray a = context.getTheme().obtainStyledAttributes(attrs,
R.styleable.SimpleExoPlayerView, 0, 0);
try
playerLayoutId = a.getResourceId(R.styleable.SimpleExoPlayerView_player_layout_id,
playerLayoutId);
useArtwork = a.getBoolean(R.styleable.SimpleExoPlayerView_use_artwork, useArtwork);
useController = a.getBoolean(R.styleable.SimpleExoPlayerView_use_controller, useController);
surfaceType = a.getInt(R.styleable.SimpleExoPlayerView_surface_type, surfaceType);
resizeMode = a.getInt(R.styleable.SimpleExoPlayerView_resize_mode, resizeMode);
controllerShowTimeoutMs = a.getInt(R.styleable.SimpleExoPlayerView_show_timeout,
controllerShowTimeoutMs);
finally
a.recycle();
PlayerbackControlVIew.java
int controllerLayoutId = R.layout.exo_playback_control_view;
rewindMs = DEFAULT_REWIND_MS;
fastForwardMs = DEFAULT_FAST_FORWARD_MS;
showTimeoutMs = DEFAULT_SHOW_TIMEOUT_MS;
if (attrs != null)
TypedArray a = context.getTheme().obtainStyledAttributes(attrs,
R.styleable.PlaybackControlView, 0, 0);
try
rewindMs = a.getInt(R.styleable.PlaybackControlView_rewind_increment, rewindMs);
fastForwardMs = a.getInt(R.styleable.PlaybackControlView_fastforward_increment,
fastForwardMs);
showTimeoutMs = a.getInt(R.styleable.PlaybackControlView_show_timeout, showTimeoutMs);
controllerLayoutId = a.getResourceId(R.styleable.PlaybackControlView_controller_layout_id,
controllerLayoutId);
finally
a.recycle();
可以看出 这两个关键的东西,布局都是是可以直接替换的,而且里面的一些属性可以设置(个人觉得一些开源东西现在只能看源码才能知道怎么用,文档现在很少了),所以如果你要定义自己东西就直接改布局就行了,然后结合一些监听就可以了。
最后是不是觉得写得很少?
我也觉得有点少,但是我也不知道写些啥,api的用法都在源码的那个Demo里,一看就明白,改吧改吧就能用了。 PS:多看源码早成大牛
以上是关于Android视频播放器Exoplayer自定义的主要内容,如果未能解决你的问题,请参考以下文章
Android TV 中的 ExoPlayer 以纵向模式而不是横向模式播放视频
如何从 vimeo 帐户检索视频源以在 exoplayer android 中播放?