一、基于ExoPlayer 自定义播放器 JPlayer支持功能:

  • 1 ExoUserPlayer 基本播放。

  • 2 GestureVideoPlayer 增加手势 亮度,音量,快进,等手势。

  • 3 ManualPlayer 可自定义触发播放。

  • 5 广告视频预览(轻松实现,完美切换)。

  • 6 视频清晰度切换。

  • 7 缓存下载加密视频功能(边播变缓存轻松实现。

  • 8 支持自定义多种 kttp,Rtmp,Https,Cronet等协议。

  • 9 支持列表集合数据O播放视频(详情播放完美过度)

  • 10 支持多种文件类型,MP4,M4A,WebM,Matroska,Ogg,WAV,MP3,MPEG-TS,MPEG-PS,FLV,ADTS (AAC),Flac,M3U8,mkv 等。

  • 11 支持网络类型 提示是否播放(可自定义冰屏蔽)。

  • 12 1.5.5增加,视频加载布局, 错误布局,重播布局,提示布局自定义,更灵活实现自己布局样式。

  • 13 支持视频加载中显示模式(网速模式和百分比模式)。

  • 14 支持视频加速慢速播放。

  • 15 支持视频封面图(两种模式封面图)。

  • 16 1.7.0支持自定义MediaSource。

  • 17 1.7.0增加 手势 亮度调节,视频进度,音量 布局自定义。

  • 18 支持精简版和完整版,选择使用更丰富。

  • 19 支持自定义AES视频加密,简单加密

  • 20 增加自定义离线下载辅助类DefaultProgressDownloader(支持(AES/CBC)加密文件处理),HlsDownloader,DashDownloader,SsDownloader,SegmentDownloader

  • 21 支持播放锁屏功能和控制动画效果,返回按钮和全屏按钮图标自定义。

效果图:

二、控件属性

1.控件属性

  <chuangyuan.ycj.videolibrary.widget.VideoPlayerView         android:id="@+id/exo_play_context_id"         android:layout_width="match_parent"         android:layout_height="match_parent"         android:background="@android:color/transparent"         app:controller_layout_id="@layout/simple_exo_playback_control_view"         app:player_layout_id="@layout/simple_exo_view"         app:player_replay_layout_id="@layout/custom_play_replay"         app:player_error_layout_id="@layout/custom_play_error"         app:player_hint_layout_id="@layout/custom_play_btn_hint"         app:player_load_layout_id="@layout/custom_exo_play_load"         app:player_gesture_audio_layout_id="@layout/custom_gesture_audio"         app:player_gesture_bright_layout_id="@layout/custom_gesture_brightness"         app:player_gesture_progress_layout_id="@layout/custom_gesture_pro"         app:resize_mode="fit"         app:show_timeout="3000"         app:surface_type="texture_view"         app:fastforward_increment="0"         app:rewind_increment="0"         app:user_watermark="@mipmap/watermark_big"         app:player_list="true"         app:use_controller="true"         app:player_fullscreen_image_selector="@drawable/custom_full_selector"         app:player_back_image="@drawable/ic_back_custom"          />

基本使用如下

        <chuangyuan.ycj.videolibrary.widget.VideoPlayerView                 android:id="@+id/exo_play_context_id"                 android:layout_width="match_parent"                 android:layout_height="match_parent"                 android:background="@android:color/transparent"                 />

三、JAVA 代码

1、 播放控制类

  • 1.ExoUserPlayer 基本播放父类,实现基本播放,设置setPlayUri();

  • 2.GestureVideoPlayer 具有手势操作播放(调节亮度和视频进度,和音量)

  • 3.ManualPlayer 点击开始按钮播放,具有手势功能,和列表播放

2、 播放代码

//实例化播放控制类ManualPlayer exoPlayerManager = new ManualPlayer(this,R.id.exo_play_context_id);//自定义你的数据源,后面详细介绍如何自定义数据源类//ManualPlayer exoPlayerManager = new ManualPlayer(this,R.id.exo_play_context_id,new DataSource(this));//加载m3u8    exoPlayerManager.setPlayUri("http://dlhls.cdn.zhanqi.tv/zqlive/35180_KUDhx.m3u8");//加载ts.文件exoPlayerManager.setPlayUri("http://185.73.239.15:25461/live/1/1/924.ts");//播放本地视频exoPlayerManager.setPlayUri("/storage/emulated/0/DCIM/Camera/VID_20170717_011150.mp4");//下面开启多线路播放exoPlayerManager.setShowVideoSwitch(true); //开启切换按钮,默认关闭String [] test={"http://120.25.246.21/vrMobile/travelVideo/zhejiang_xuanchuanpian.mp4","http://120.25.246.21/vrMobile/travelVideo/zhejiang_xuanchuanpian.mp4","http://120.25.246.21/vrMobile/travelVideo/zhejiang_xuanchuanpian.mp4"};String[] name={"超清","高清","标清"};exoPlayerManager.setPlaySwitchUri(test,name);//开始启动播放视频exoPlayerManager.startPlayer();

1.实例化播放控制类

ManualPlayer exoPlayerManager = new ManualPlayer(this,R.id.exo_play_context_id);ManualPlayer exoPlayerManager = new ManualPlayer(this,videoPlayerView);

2.自定义你的数据源,后面详细介绍如何自定义数据源类

ManualPlayer exoPlayerManager = new ManualPlayer(this,R.id.exo_play_context_id,new DataSource(this));ManualPlayer exoPlayerManager = new ManualPlayer(this,videoPlayerView,new DataSource(this));//定义多媒体MediaSourceBuilder   mediaSourceBuilder=new MediaSourceBuilder(this,new DataSource(getApplication()));//集成smoothstreaming,dash,hlsWholeMediaSource   mediaSourceBuilder=new MediaSourceBuilder(this,new DataSource(getApplication()));  ManualPlayer   exoPlayerManager = new ManualPlayer(this,mediaSourceBuilder, videoPlayerView);

3.设置视频标题

exoPlayerManager.setTitles("视频标题");

4.添加水印图片

exoPlayerManager.setExoPlayWatermarkImg(R.mipmap.watermark_big);

5.设置开始播放进度

exoPlayerManager.setPosition(1000)

6.设置封面图

videoPlayerView.setPreviewImage(bimtap);videoPlayerView.getPreviewImage())

7.设置视频路径

exoPlayerManager.setPlayUri("http://dlhls.cdn.zhanqi.tv/zqlive/35180_KUDhx.m3u8");  exoPlayerManager.setPlayUri(Uri.parse("http://dlhls.cdn.zhanqi.tv/zqlive/35180_KUDhx.m3u8"));exoPlayerManager.setPlayUri(Environment.getExternalStorageDirectory().getAbsolutePath()+"/test.h264"); //本地视频

8.设置多线路播放

//开启多线路设置,默认关闭exoPlayerManager.setShowVideoSwitch(true);//支持List列表String [] test={"http://120.25.246.21/vrMobile/travelVideo/zhejiang_xuanchuanpian.mp4",       "http://120.25.246.21/vrMobile/travelVideo/zhejiang_xuanchuanpian.mp4",       http://120.25.246.21/vrMobile/travelVideo/zhejiang_xuanchuanpian.mp4"};String[] name={"超清","高清","标清"};exoPlayerManager.setPlaySwitchUri(test,name);

9.设置视频加载提示显示模式(默认LoadModelType.SPEED (网速模式))

/**设置加载百分比显示模式**/exoPlayerManager.setLoadModel(LoadModelType.PERCENR);

10.设置视频倍数播放

//设置播放视频倍数  快放和慢放播放 小于1 慢放 大于1 快放exoPlayerManager.setPlaybackParameters(2f,2f);

11.广告视频预览(轻松实现)

     /**需要添加参数就行**/      //第一个参数代表是广告视频位置索引       exoPlayerManager.setPlayUri(0, "http://mp4.vjshi.com/2013-07-25/2013072519392517096.mp4", "http://mp4.vjshi.com/2013-11-11/1384169050648_274.mp4");               //如果自己在播放视频时特出处理。实现该接口回调       //视频切换回调处理,进行布局处理,控制布局显示        exoPlayerManager.setOnWindowListener(new VideoWindowListener() {                 @Override        public void onCurrentIndex(int currentIndex, int windowCount) {                     if (currentIndex == 0) {                         //屏蔽控制布局                         exoPlayerManager.hideControllerView();                         //如果屏蔽控制布局 但是需要显示全屏按钮。手动显示,播放正常时自动还原。无需里出                         videoPlayerView.getExoFullscreen().setVisibility(View.VISIBLE);                     } else {                         //恢复控制布局                         exoPlayerManager.showControllerView();                     }                 }         });       //跳过广告视频操作       exoPlayerManager.next();

12.设置点击播放按钮需要处理业务

 exoPlayerManager.setOnPlayClickListener(new View.OnClickListener() {                          @Override                          public void onClick(View v) {                              Toast.makeText(MainCustomActivity.this,"定义点击播放事件",Toast.LENGTH_LONG).show();                               //处理业务操作 完成后                               exoPlayerManager.startPlayer();//开始播放                }     });

13.设置监听回调VideoInfoListener

exoPlayerManager.setVideoInfoListener(new VideoInfoListener() {

                   @Override                   public void onLoadingChanged() {                             //加载变化                   }                   @Override                   public void onPlayerError(ExoPlaybackException e) {                             //加载错误                  }                   @Override                   public void onPlayEnd() {                          //播放结束                   }                   @Override                   public void onRepeatModeChanged(int repeatMode) {                       //模式变化                   }               });

14.覆写Activity和Fragment周期方法

           Override            public void onResume() {                super.onResume();                exoPlayerManager.onResume();            }            @Override            public void onPause() {                super.onPause();                exoPlayerManager.onPause();            }            @Override            protected void onDestroy() {                exoPlayerManager.onDestroy();                super.onDestroy();            }            @Override            public void onConfigurationChanged(Configuration newConfig) {                exoPlayerManager.onConfigurationChanged(newConfig);//横竖屏切换                super.onConfigurationChanged(newConfig);            }            @Override            public void onBackPressed() {            //使用播放返回键监听             if(exoPlayerManager.onBackPressed()){                 finish();             }            }
GitHub地址:https://github.com/yangchaojiang/yjPlay

一款基于ExoPlayer的自定义播放器(已开源)相关推荐

  1. iOS播放器之基于VLCKit的自定义播放器

    VLC是一款了不起的播放器,很喜欢,功能很强大,目前据我所知能播放RMVB.MKV.mp4.FLV等等格式的视频,分享一个基于VLCKit的自定义播放器 源码地址:https://github.com ...

  2. 使用google开源框架Exoplayer开发自定义播放器

    http://ju.outofmemory.cn/entry/143633 背景: 移动端播放视频的需求如日中天, 最近特此使用google的开源框架Exoplayer来开发Android端的视频播放 ...

  3. 基于QtAV的简易播放器(开源)

    这个开源代码,是我利用QtAV源码,提取其中一部分代码,进行整合到我自己项目中,做的一个小型播放器测试,至于怎么安装一些环境以及QtAV源码编译在我以前写的一篇博客中可以看到(Qt第三方库QtAV-- ...

  4. 仿酷狗音乐播放器已开源!

    转载请说明原出处,谢谢:http://blog.csdn.net/zhuhongshu/article/details/41037875 距离我发布测试版的Redrain音乐盒(仿酷狗播放器),现在正 ...

  5. 基于jQuery虾米音乐播放器样式代码

    分享一款基于jQuery虾米音乐播放器样式代码.这是一款基于jquery+html5实现的虾米音乐播放器源码下载.效果图如下: 在线预览    源码下载 实现的代码. html代码: <div ...

  6. Exoplayer+Exomedia打造自定义播放器(二)

    Exomedia源码分析 VideoControls 播放器基类 继承自RelativeLayout,播放器基类.作用是提供一些默认的播放器基本组件:提供反射控制器布局.显示加载进度.播放器隐藏显示动 ...

  7. vue-video-player文档_基于vue-video-player自定义播放器的方法

    基于vue-video-player自定义播放器的方法 发布时间:2019-01-07 发布网站:编程之家 编程之家收集整理的这篇文章主要介绍了基于vue-video-player自定义播放器的方法, ...

  8. 基于 AVPlayer 自定义播放器

    如果我只是简单的播放一个视频,而不需要考虑播放器的界面.iOS9.0 之前使用 MPMoviePlayerController, 或者内部自带一个 view 的 MPMoviePlayerViewCo ...

  9. 基于C开发一款简洁实用的Mp3播放器

    C++ 音频编程:一款简洁实用的Mp3播放器源代码,只是实现基本的MP3文件播放.暂停.音量控制等功能,界面采用的传统窗体风格,核心代码在下载本源码后,可参考Mp3PlayerDlg.cpp文件. 项 ...

最新文章

  1. 基于visual Studio2013解决面试题之0210树的最远距离
  2. spark学习-Spark性能调优(1)
  3. 不能对bug视而不见
  4. 企业微信openid转userid失败问题
  5. JAVA:代码实现zip压缩
  6. 【机械制造基础部分(京玉海第二版)部分思考题】
  7. TVS与ESD的区别
  8. java+selnium爬取凡人修仙传
  9. php 分数相同怎么排名,怎么算出成绩排名_学校班级成绩排名计算方法
  10. 什么是对称正定矩阵?
  11. 交通运输词汇(zt)
  12. JS内置对象及其用法总结
  13. 华为M-LAG跨设备链路聚合技术理论讲解
  14. 训练过程曲线分析:acc/loss/val_acc/val_loss【转载】
  15. 【离散椭圆弧】将椭圆弧按弧长等分为一定数量弧上点
  16. 人工优化的B2B信息发布系统
  17. ath79 spi报错:ath79-spi 1f000000.spi: cs1 = max 1
  18. 内存数据库mongodb_内存和磁盘性能如何影响您的MongoDB数据库
  19. 人工智障入门-没有灵魂的功夫茶
  20. windows安装python虚拟环境_windows上安装python虚拟环境

热门文章

  1. FAR(FPR)与FRR(FNR)的曲线绘图以及EER计算绘图
  2. G - 土耳其冰淇凌
  3. 60w的数据产品经理面试考什么?(二)
  4. ubuntu换源并下载python3.8
  5. 在自己电脑上建立git步骤
  6. 计算机苏教版初一教案,苏教版初中七年级信息技术全册教案.docx
  7. 全球及中国甲基正丙基酮行业行业专项调查与投资战略研究报告2022-2028年
  8. api悬浮音乐播放器
  9. c++游戏之跑酷!2D彩色支持建图!
  10. Codeforces 1118D1