1 Star 2 Fork 0

TS_OHOS / QSVideoPlayer

Create your Gitee Account
Explore and code with more than 8 million developers,Free private repositories !:)
Sign up
Clone or Download
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README.md

QSVideoplayer

本项目是基于开源项目qsvideoplayer进行ohos化的移植和开发的,可以通过项目标签以及 github地址.

移植版本:2.2.8

项目介绍

项目名称:QSVideoplayer

所属系列:ohos的第三方组件适配移植

功能:

  • 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接口:
        
        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<? extends BaseMedia> 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示例,下面介绍其主要用法:
        DemoQSVideoView的ui用的jc播放器
        DemoQSVideoView qsVideoView = (DemoQSVideoView) findViewById(R.id.xxx);
    
        qsVideoView.setUp(url, "这是一一一一一一一一一个标题");
    
        设置多个清晰度和ijk配置
        List<IjkMedia.Option> 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文件里面引用如下代码
         <org.song.videoplayer.DemoQSVideoView
                         ohos:id="$+id:view_qs6"
                         ohos:height="400vp"
                         ohos:width="match_parent"
                         ohos:bottom_padding="12vp"
                         ohos:padding="8vp"
                         ohos:top_padding="12vp"/>
                         
         悬浮窗的使用
             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

Repository Comments ( 0 )

Sign in to post a comment

About

支持设置视频比例,支持两种悬浮窗,支持拓展解码器,支持本地缓存,支持倍速静音等,只需100行不到的java代码即可打造自己的播放器,提供DemoQSVideoView成品播放器,支持手势,清晰度,一句代码集成弹幕。openharmony移植组件 expand collapse
Java
Apache-2.0
Cancel

Releases

No release

QSVideoPlayer

Contributors

All

Activities

Load More
can not load any more
Java
1
https://git.oschina.net/ts_ohos/qsvideo-player_hos.git
git@git.oschina.net:ts_ohos/qsvideo-player_hos.git
ts_ohos
qsvideo-player_hos
QSVideoPlayer
master

Search