超强加载网络视频框架,支持任何地方使用,防火山小视频,今日头条视频等等
深入了解请看demo
https://github.com/xiaoyanger0825/NiceVieoPlayer
在Gradle中添加依赖:
allprojects {repositories {...maven { url 'https://jitpack.io' }}
}dependencies {compile 'com.github.xiaoyanger0825:NiceVieoPlayer:v2.2'
}
在对应视频界面所在的Activity的Manifest.xml中需要添加如下配置:
android:configChanges="orientation|keyboardHidden|screenSize"
1.在Activity中使用
在Activity中使用时,该Activity需要继承自AppCompatActivity,在onStop中需要释放播放器,并且要在onBackPress中处理按下返回键的逻辑:
private void init() {mNiceVideoPlayer = (NiceVideoPlayer) findViewById(R.id.nice_video_player);mNiceVideoPlayer.setPlayerType(NiceVideoPlayer.TYPE_IJK); // or NiceVideoPlayer.TYPE_NATIVEmNiceVideoPlayer.setUp(mVideoUrl, null);TxVideoPlayerController controller = new TxVideoPlayerController(this);controller.setTitle(mTitle);controller.setImage(mImageUrl);mNiceVideoPlayer.setController(controller);
}@Override
protected void onStop() {super.onStop();// 在onStop时释放掉播放器NiceVideoPlayerManager.instance().releaseNiceVideoPlayer();
}
@Override
public void onBackPressed() {// 在全屏或者小窗口时按返回键要先退出全屏或小窗口,// 所以在Activity中onBackPress要交给NiceVideoPlayer先处理。if (NiceVideoPlayerManager.instance().onBackPressd()) return;super.onBackPressed();
}
详细可参考demo中的TinyWindowPlayActivity、ChangeClarityActivity、RecyclerViewActivity.
2.在Fragment中使用
在Fragment中使用时,该Fragment外层的Activity需要继承自AppCompatActivity,并且也要处理返回键按下逻辑:
public class XXXActivity extends AppCompatActivity {...@Overridepublic void onBackPressed() {// 在全屏或者小窗口时按返回键要先退出全屏或小窗口,// 所以在Activity中onBackPress要交给NiceVideoPlayer先处理。if (NiceVideoPlayerManager.instance().onBackPressd()) return;super.onBackPressed();}...
}
同时在Fragment中的onStop方法中释放播放器:
public class XXXFragenment extends Fragment {...@Overridepublic void onStop() {super.onStop();NiceVideoPlayerManager.instance().releaseNiceVideoPlayer();}...
}
3.切换清晰度
如果需要切换清晰度,需要在controller中配置清晰度相关的等级和视频链接地址:
private void init() {mNiceVideoPlayer = (NiceVideoPlayer) findViewById(R.id.nice_video_player);mNiceVideoPlayer.setPlayerType(NiceVideoPlayer.TYPE_IJK); // IjkPlayer or MediaPlayerTxVideoPlayerController controller = new TxVideoPlayerController(this);controller.setTitle(mTitle);controller.setClarity(getClarites(), 0); // 设置清晰度以及默认播放的清晰度Glide.with(this).load(mImageUrl).placeholder(R.drawable.img_default).crossFade().into(controller.imageView());mNiceVideoPlayer.setController(controller);
}public List<Clarity> getClarites() {List<Clarity> clarities = new ArrayList<>();clarities.add(new Clarity("标清", "270P", "http://play.g3proxy.lecloud.com/vod/v2/MjUxLzE2LzgvbGV0di11dHMvMTQvdmVyXzAwXzIyLTExMDc2NDEzODctYXZjLTE5OTgxOS1hYWMtNDgwMDAtNTI2MTEwLTE3MDg3NjEzLWY1OGY2YzM1NjkwZTA2ZGFmYjg2MTVlYzc5MjEyZjU4LTE0OTg1NTc2ODY4MjMubXA0?b=259&mmsid=65565355&tm=1499247143&key=f0eadb4f30c404d49ff8ebad673d3742&platid=3&splatid=345&playid=0&tss=no&vtype=21&cvid=2026135183914&payff=0&pip=08cc52f8b09acd3eff8bf31688ddeced&format=0&sign=mb&dname=mobile&expect=1&tag=mobile&xformat=super"));clarities.add(new Clarity("高清", "480P", "http://play.g3proxy.lecloud.com/vod/v2/MjQ5LzM3LzIwL2xldHYtdXRzLzE0L3Zlcl8wMF8yMi0xMTA3NjQxMzkwLWF2Yy00MTk4MTAtYWFjLTQ4MDAwLTUyNjExMC0zMTU1NTY1Mi00ZmJjYzFkNzA1NWMyNDc4MDc5OTYxODg1N2RjNzEwMi0xNDk4NTU3OTYxNzQ4Lm1wNA==?b=479&mmsid=65565355&tm=1499247143&key=98c7e781f1145aba07cb0d6ec06f6c12&platid=3&splatid=345&playid=0&tss=no&vtype=13&cvid=2026135183914&payff=0&pip=08cc52f8b09acd3eff8bf31688ddeced&format=0&sign=mb&dname=mobile&expect=1&tag=mobile&xformat=super"));clarities.add(new Clarity("超清", "720P", "http://play.g3proxy.lecloud.com/vod/v2/MjQ5LzM3LzIwL2xldHYtdXRzLzE0L3Zlcl8wMF8yMi0xMTA3NjQxMzkwLWF2Yy00MTk4MTAtYWFjLTQ4MDAwLTUyNjExMC0zMTU1NTY1Mi00ZmJjYzFkNzA1NWMyNDc4MDc5OTYxODg1N2RjNzEwMi0xNDk4NTU3OTYxNzQ4Lm1wNA==?b=479&mmsid=65565355&tm=1499247143&key=98c7e781f1145aba07cb0d6ec06f6c12&platid=3&splatid=345&playid=0&tss=no&vtype=13&cvid=2026135183914&payff=0&pip=08cc52f8b09acd3eff8bf31688ddeced&format=0&sign=mb&dname=mobile&expect=1&tag=mobile&xformat=super"));clarities.add(new Clarity("蓝光", "1080P", "http://play.g3proxy.lecloud.com/vod/v2/MjQ5LzM3LzIwL2xldHYtdXRzLzE0L3Zlcl8wMF8yMi0xMTA3NjQxMzkwLWF2Yy00MTk4MTAtYWFjLTQ4MDAwLTUyNjExMC0zMTU1NTY1Mi00ZmJjYzFkNzA1NWMyNDc4MDc5OTYxODg1N2RjNzEwMi0xNDk4NTU3OTYxNzQ4Lm1wNA==?b=479&mmsid=65565355&tm=1499247143&key=98c7e781f1145aba07cb0d6ec06f6c12&platid=3&splatid=345&playid=0&tss=no&vtype=13&cvid=2026135183914&payff=0&pip=08cc52f8b09acd3eff8bf31688ddeced&format=0&sign=mb&dname=mobile&expect=1&tag=mobile&xformat=super"));return clarities;
}
详细参考demo中的ChangeClarityActivity
4.在RecyclerView列表中使用
在ReclerView列表中使用时需要监听itemView回收,以此释放掉对应的播放器
mRecyclerView.setRecyclerListener(new RecyclerView.RecyclerListener() {@Overridepublic void onViewRecycled(RecyclerView.ViewHolder holder) {NiceVideoPlayer niceVideoPlayer = ((VideoViewHolder) holder).mVideoPlayer;if (niceVideoPlayer == NiceVideoPlayerManager.instance().getCurrentNiceVideoPlayer()) {NiceVideoPlayerManager.instance().releaseNiceVideoPlayer();}}
});
详细参考demo中的RecyclerViewActivity.
5.播放时Home键按下以及回到播放界面的处理
按照上面的做法,在onStop直接释放掉播放器,那么在播放时按下Home键播放器也会被释放掉,如果在此回到播放界面,播放器回到最初始的状态。如果需要在播放的时候按下Home键只是暂停播放器,重新回到播放界面时又继续播放,那么可以参考demo中的CompatHomeKeyActiivty,或者对应的Activity集成自CompatHomeKeyActiivty,详细参考demo中的ProcessHome1Activity。当然,如果是在Fragment中,参考CompatKeyFragment,或者继承自CompatKeyFragment(外层的Activity还是继承自AppCompat,并处理onBackPress),详细参考demo中的ProcessHome2Activity.
超强加载网络视频框架,支持任何地方使用,防火山小视频,今日头条视频等等相关推荐
- 今日头条视频伪原创 视频md5有什么用
今日头条视频伪原创 视频md5有什么用 用户获取成本低 在短视频操作中,视频修改的作用显得尤为重要,这里介绍几款常见的工具 ...
- android 获取网络视频资源,Android 加载网络视频(url地址)第三方框架简用
正好最近做项目有个需要加载网络视频技术,就找了找,碰到了这个开源的框架.主要还是网络请求下来的视频地址,然后简单的,赋一下值,非常OK.不过限自己练习用毕竟看需求的嘛,不多介绍复制用吧. 先看看效果大 ...
- android webView加载网络视频
之前,我写过webView加载本地网页的博客,今天,就写写webView加载网络视频的内容. 一.加载网页 1.WebView用来显示网页,使用必须时刻注意我们需要添加网络权限 <uses-pe ...
- 安卓加载图片四大框架
主流图片加载框架? 1> Picasso 2> Glide 3> Fresco 4> ImageLoader 介绍: Picasso:和Square的网络库一起能发挥最大作用, ...
- android加载网页pdf,android 一行代码搞定加载网络 pdf 文件
之前写过一篇Android打开本地pdf文件的文章,最后总结的时候说,后面一定要拓展库,让其也能打开网络的的pdf文件.今天终于可以兑现承诺了.frok一份代码github.com/JoanZapat ...
- 加载网络数据失败的原因:
加载网络数据失败的原因 第一:网络权限未设置 Manifests里写入 <!--网络请求权限--><uses-permission android:name="androi ...
- layui树形懒加载_layui树形表格支持非异步和异步加载
layui树形表格支持非异步和异步加载. 使用示例如下: 展开全部 展开一层 折叠全部 折叠一层 layui.config({ base: '/uui/treetable-lay/module/' } ...
- OKhttp加载网络上的图片
使用OKhttp只需要做到五个步骤即可,下面通过一个Demo来看看OKhttp的强大之处(最下面有完整代码和详细注释): 一.关联OKhttp框架,添加网络权限 1.jar包准备 官方介绍页面有链接位 ...
- Qt界面加载网络摄像头,并实时显示,两种更新界面的方法
Qt界面加载网络摄像头,并实时显示,两种更新界面的方法 1.Qt界面加载网络摄像头,并实时显示,根据头文件中的宏定义来区分使用哪种方式.①Qt信号槽更新界面,②c语言回调方式更新界面 2.使用Open ...
最新文章
- 实验测试2SK241的g-s击穿电压
- D435 pyrealsense 如何实时获取摄像头的曝光值?get_frame_metadata(rs.frame_metadata_value.actual_exposure)成功了(更新UWP)
- c++ 方向_GE医疗C型臂系列手术机设备全球装机量破万
- poj 1060 Modular multiplication of polynomials
- 【空间数据库】Windows操作系统PostgreSQL+PostGIS环境搭建图文安装教程
- Maven的学习资料收集--(九) 构建SSH项目以及专栏maven
- 小程序遵循的语法_我如何构建一个遵循股市针对freeCodeCamp挑战的应用程序。
- Shell 操作(一)
- c语言程序计算器清屏功能,C语言实现计算器功能
- golang常量与逻辑运算基本语法
- 酒桌上的潜规则和技巧,男人必学
- Phyton学习笔记
- ESP8266 AP服务器设置
- 【认知实习】虚拟现实体验
- JS 测试网络速度与网络延迟
- C/C++ 余弦函数 cos - C语言零基础入门教程
- 本科毕业论文-软件开发类-《基于Android端开关控制系统的设计与实现》-论文模板
- 1256:献给阿尔吉侬的花束
- Python基础 实例
- Romax在法雷奥研发低功耗电驱动系统中的应用