IjkPlayerView使用
发布日期:2021-06-28 19:37:30
浏览次数:2
分类:技术文章
本文共 4488 字,大约阅读时间需要 14 分钟。
一.项目的引入
1.1源码地址
1.2依赖包的引入
如果你项目是引用support包如下引入项目即可:
//视频播放框架
implementation 'com.github.Rukey7:IjkPlayerView:v1.0.4'由于我自己的项目是用到了androidx包,引入各种报错,由于源码开发版本较低且用了support包到时版本不一致,我在源码的基础上新增了androidx的依赖包;
源码下载:
build文件以及settings文件的修改
implementation project(path: ':playerview')
include ':app', ':common',':playerview'
二.源码的调用
2.1在项目的AndroidManifest.xml文件中队activity进行如下配置
2.2把IjkPlayerView作为一个控件添加到你的布局中
2.3Activity设置
@Override protected void onResume() { super.onResume(); mPlayerView.onResume(); } @Override protected void onPause() { super.onPause(); mPlayerView.onPause(); } @Override protected void onDestroy() { super.onDestroy(); mPlayerView.onDestroy(); //PS:如果将设置只显示全屏状态,进行如下设置 //设置结束时返回的方向,防止返回上个界面先横再变竖屏体验感不好 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); mPlayerView.configurationChanged(newConfig); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (mPlayerView.handleVolumeKey(keyCode)) { return true; } return super.onKeyDown(keyCode, event); } @Override public void onBackPressed() { if (mPlayerView.onBackPressed()) { return; } super.onBackPressed(); }
2.4弹幕发送的调用
//写入弹幕的资源流 InputStream stream = null; try { stream = getAssets().open("custom.json"); } catch (IOException e) { e.printStackTrace(); } //设置视频播放前的图片预览 Glide.with(this).load(IMAGE_URL).fitCenter().into(mPlayerView.mPlayerThumb); mPlayerView.init() .setTitle("这是个跑马灯TextView,标题要足够长才会跑。-(゜ -゜)つロ 乾杯~") .enableDanmaku()//设置使用弹幕// .setDanmakuCustomParser(new AcFunDanmakuParser(), AcFunDanmakuLoader.instance(), null) // 注意 setDanmakuCustomParser() 要在 setDanmakuSource() 前调用 //自定义弹幕解析器:解析器、加载器、转换器 .setDanmakuCustomParser(new DanmakuParser(), DanmakuLoader.instance(), DanmakuConverter.instance()) .setDanmakuSource(stream)//设置弹幕资源 .setVideoPath(VIDEO_URL)//播放地址 //弹幕回调监听 .setDanmakuListener(new OnDanmakuListener() { @Override public boolean isValid() { // TODO: 这里可以控制全屏模式下的是否可以发射弹幕,返回 true 才能发射,可判断用户是否登录 Log.w("CustomDanmakuActivity", "准备发射弹幕"); return true; } @Override public void onDataObtain(DanmakuData data) { // 添加个人信息 data.userName = "LONG"; data.userLevel = 2; // 这个转换的数据格式 DanmakuData 需要配合 DanmakuConverter 来实现,如果没有设置转换器则默认返回 BaseDanmaku Log.e("CustomDanmakuActivity", data.toString()); // GsonHelper.object2JsonStr(data)转换为Json字符串,可以直接保存到文件或服务器,参考{assets/custom.json}文件 Log.e("CustomDanmakuActivity", GsonHelper.object2JsonStr(data)); } }); //发送弹幕 mIvSend.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mPlayerView.sendDanmaku(mEditText.getText().toString(), false); mEditText.setText(""); _closeSoftInput(); } });
2.5视频源的设置
mPlayerView.init() .setTitle("这是个跑马灯TextView,标题要足够长才会跑。-(゜ -゜)つロ 乾杯~") .setSkipTip(1000*60*1)//设置跳转目标进度,单位:ms .enableDanmaku() .setDanmakuSource(getResources().openRawResource(R.raw.bili)) //设置流畅、清晰、高清、超清、1080P五种视频资源 .setVideoSource(null, VIDEO_URL, VIDEO_HD_URL, null, null) //选择视频源(上面五选一依次分别为:流畅、清晰、高清、超清和1080P) .setMediaQuality(IjkPlayerView.MEDIA_QUALITY_HIGH);
设置的视频资源,无需设置.setVideoPath
2.6强制横(全)屏播放
mPlayerView.init() .alwaysFullScreen()//设置只显示全屏状态 .enableOrientation()//使能视频翻转 .setVideoPath(VIDEO_URL)//视频地址 .enableDanmaku()//使用弹幕 .setDanmakuSource(getResources().openRawResource(R.raw.bili))//设置弹幕资源 .setTitle("这是个跑马灯TextView,标题要足够长才会跑。-(゜ -゜)つロ 乾杯~") .start();
转载地址:https://blog.csdn.net/xxdw1992/article/details/109568852 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月09日 09时35分12秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
clickhouse的常用数据类型
2019-04-29
clickhouse配置查询记录query_log
2019-04-29
clickhouse的系统表
2019-04-29
waterdrop配置文件动态赋值
2019-04-29
Spark和Flink的对比,谁才是大数据计算引擎王者?
2019-04-29
写hive到clickhouse的脚本遇到的问题及解决办法
2019-04-29
davanci连接impala以及使用变量
2019-04-29
hive常用日期函数
2019-04-29
impala刷新元数据以及一些命令
2019-04-29
hive可视化工具-dbeaver
2019-04-29
Flink学习笔记(1)——流批处理
2019-04-29
Flink集群搭建教程
2019-04-29
Flink学习笔记(2)——任务提交模式
2019-04-29
生产环境openssl漏洞-升级openssl到最新版本
2019-04-29
k8s无法进入容器报错和解决方法
2019-04-29
glusterfs搭建实操
2019-04-29
mysql5.7编译安装
2019-04-29
mysql5.6.39编译安装
2019-04-29