# QSVideoPlayer **Repository Path**: ts_ohos/qsvideo-player_hos ## Basic Information - **Project Name**: QSVideoPlayer - **Description**: 支持设置视频比例,支持两种悬浮窗,支持拓展解码器,支持本地缓存,支持倍速静音等,只需100行不到的java代码即可打造自己的播放器,提供DemoQSVideoView成品播放器,支持手势,清晰度,一句代码集成弹幕。openharmony移植组件 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 0 - **Created**: 2021-03-31 - **Last Updated**: 2023-10-17 ## Categories & Tags **Categories**: harmonyos-multimedia **Tags**: None ## README # QSVideoplayer 本项目是基于开源项目qsvideoplayer进行harmonyos化的移植和开发的,可以通过项目标签以及 [github地址](https://github.com/tohodog/QSVideoPlayer). 移植版本:2.2.8 ## 项目介绍 ### 项目名称:QSVideoplayer ### 所属系列:harmonyos的第三方组件适配移植 ### 功能: - 1.支持设置视频比例 - 2.支持两种悬浮窗 - 3.支持拓展解码器 - 4.支持本地缓存 - 5.支持倍速静音等 - 6.一句代码集成弹幕 - 7.支持手势,清晰度 只需100行不到的java代码即可打造自己的播放器,提供DemoQSVideoView成品播放器, ### 项目移植状态:基本移植,悬浮窗播放bug需要hos官方答复解决,其它三方解码器拓展功能需其它组件支持。 ### 调用差异:基本没有使用差异,请参照demo使用 ### 原项目Doc地址:https://github.com/tohodog/QSVideoPlayer ### 编程语言:java ## 安装教程 方案一 建议下载开源代码并参照demo引入相关库: compile project(path: ':qsvideoplayer') 方案二 项目根目录的build.gradle中的repositories添加: mavenCentral() module目录的build.gralde中dependencies添加: implementation 'com.gitee.ts_ohos:qsvideoplayer:1.0.0' ## 使用说明 - QSVideoView的API接口: ```java void setUp(String url, Object... objects);//设置视频地址 void play();//播放/初始化(完成自动播放) void prePlay();//初始化(完成不会播放) void pause();//暂停 void seekTo(int duration);//进度调节 void setPlayListener(PlayListener playListener);//播放监听 参数含义参照IVideoPlayer void addPlayListener(PlayListener playListener);//多播放监听 void removePlayListener(PlayListener playListener);//移除播放监听 void setAspectRatio(int aspectRatio);//设置视频比例 参数见IRenderView void setDecodeMedia(Class claxx);//设置解码模块 void openCache();//打开缓存 boolean onBackPressed();//返回键退出全屏 boolean isPlaying();//是否播放中 void enterWindowFullscreen();//全屏 void quitWindowFullscreen();//退出全屏 boolean enterWindowFloat(FloatParams floatParams);//浮窗 false没权限 void quitWindowFloat();//退出浮窗 boolean setMute(boolean isMute);//是否静音 false不支持 boolean setSpeed(float rate);//设置播放倍速,false不支持 void release();//销毁 Bitmap getCurrentFrame();//截图 int getPosition();//获取播放进度 int getDuration();//获取视频时长 int getVideoWidth();//获取视频宽 int getVideoHeight();//获取视频长 int getCurrentMode();//获得播放器当前的模式(全屏,普通,浮窗) int getCurrentState();//获得播放器当前的状态(播放,暂停,完成...) ``` - 更多的使用方法参考本项目的demo示例,下面介绍其主要用法: ```java DemoQSVideoView的ui用的jc播放器 DemoQSVideoView qsVideoView = (DemoQSVideoView) findViewById(R.id.xxx); qsVideoView.setUp(url, "这是一一一一一一一一一个标题"); 设置多个清晰度和ijk配置 List list = new ArrayList<>(); list.add(new IjkMedia.Option(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "soundtouch", 1)); demoVideoView.setUp( QSVideo.Build(url).title("这是标清标题").definition("标清").resolution("标清 720P").build(), QSVideo.Build(url).title("这是高清标题").definition("高清").resolution("高清 1080P").option(list).build()); qsVideoView.getCoverImageView().setImageResource(R.mipmap.cover);//设置封面 设置监听 qsVideoView.setPlayListener(new PlayListener() { @Override public void onStatus(int status) {//播放器的ui状态 if (status == IVideoPlayer.STATE_AUTO_COMPLETE) qsVideoView.quitWindowFullscreen();//播放完成退出全屏 } @Override//全屏/普通/浮窗... public void onMode(int mode) { } @Override//播放事件 初始化完成/缓冲/出错/点击事件... public void onEvent(int what, Integer... extra) { } }); 进入全屏的模式 0横屏 1竖屏 2传感器自动横竖屏 3根据视频比例自动确定横竖屏 -1什么都不做 qsVideoView.enterFullMode=3; qsVideoView.play(); 返回键退出全屏 @Override public void onBackPressed() { if (qsVideoView.onBackPressed()) return; super.onBackPressed(); } 在resources里面的layout中添加XML文件里面引用如下代码: 悬浮窗的使用 FloatParams floatParams = new FloatParams(); floatParams.x = 0;//浮窗中心坐标x floatParams.y = 0;//浮窗中心坐标y floatParams.w = 540;//宽 floatParams.h = 270;//高 floatParams.round = 30;//浮窗圆角 需SDK_INT >= 21 floatParams.fade = 0.8f;//透明度 需SDK_INT >= 11 floatParams.canMove = true;//是否可以拖动 floatParams.canCross = false;//是否可以越屏幕边界 floatParams.systemFloat = true;//TRUE系统浮窗需要权限 FALSE界面内浮窗 if (!qsVideoView.enterWindowFloat(floatParams)) { Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName())); startAbility(intent, 0); } } ``` ## 效果演示 ## 版本迭代 - v1.0.0 项目初次提交 ## 版本和许可信息 Apache License Version 2.0, January 2004 http://www.apache.org/licenses https://gitee.com/ts_ohos/qsvideo-player_hos/blob/master/LICENSE