当前仓库属于暂停状态,部分功能使用受限,详情请查阅 仓库状态说明
43 Star 154 Fork 38

江江 / yjPlay
暂停

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

yjPlay

Download

gif 显示有点卡,帧数低,实际很流畅

下载预览apk

基于exoPlayer 自定义播放器 JPlayer支持功能:

  • 1 ExoUserPlayer 基本播放。
  • 2 GestureVideoPlayer 增加手势 亮度,音量,快进,等手势。
  • 3 ManualPlayer 可自定义触发播放。
  • 5 支持广告视频预览(轻松实现,完美切换,可自定义)。
  • 6 支持多种分辨率视频切换。
  • 7 缓存下载加密视频功能(边播变缓存轻松实现不是使用AndroidVideoCache。
  • 8 支持自定义多种 kttp,Rtmp,Https,Cronet等协议。
  • 9 支持列表集合 播放视频(列表到详情播放完美过度)
  • 10 支持多种文件类型,MP4,M4A,WebM,Matroska,Ogg,WAV,MP3,MPEG-TS,MPEG-PS,FLV,ADTS (AAC),Flac,M3U8,mkv 等。
  • 11 支持网络类型 提示是否播放(可自定义屏蔽)。
  • 12 支持视频加载布局, 错误布局,重播布局,提示布局自定义,更灵活实现自己布局样式。
  • 13 支持视频加载中显示模式(网速模式和百分比模式[已废弃])。
  • 14 支持视频加速慢速播放。
  • 15 支持多种视频封面图(两种模式封面图)。
  • 16 支持支持自定义MediaSource
  • 17 支持增加 手势 亮度调节,视频进度,音量 布局自定义。
  • 18 支持精简版和完整版,选择使用更丰富。
  • 19 支持自定义AES视频加密,简单加密→戳我(2.1.31版本已弃用)
  • 20 增加离线下载辅助类ExoWholeDownLoadManger,ExoWholeDownloadTracker,ExoDownLoadManger,DownloadService()-->戳我)
  • 21 支持播放锁屏功能和控制布局显示显示动画效果.
  • 22 支持返回按钮和全屏按钮图标自定义。
  • 23 支持自定义视频封面布局.(视频封面图布局样式完美多样化)。
  • 24 支持视频实时进度(头条底部进度)。
  • 25 支持流式API方式调用。

更新日志2.1.91→》戳我查看

一.引用类库

 repositories {
        jcenter()
        mavenCentral();
    }

dependencies {
   //完整版
    compile 'com.ycjiang:VideoPlayModule:2.1.91' 
   //精简版(没有smoothstreaming,dash,hls,只有常规点播功能)
    compile 'com.ycjiang:VideoPlayModule-Lite:2.1.91'

}

提示:无法正常引用请在 repositories{ }添加已下代码 mavenCentral(url: "https://dl.bintray.com/ycjiang/ycjiang")

二.控件属性

基本使用如下

      <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"
              />

1.控件属性

  <chuangyuan.ycj.videolibrary.widget.VideoPlayerView
        android:id="@+id/exo_play_context_id"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        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:player_preview_layout_id="@layout/exo_default_preview_layout"
        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"
         />

2.属性说明 自定义视图的可用属性:

name type info
surface_type enum 视频渲染类型 texture_view 和surface_view 枚举类型 默认surface_view
resize_mode enum 视频缩放渲染显示方式一共4种
reference 1.fit 正常模式
reference 2.fixed_width 保持的是视频宽度,拉伸视频高度
reference 3.fixed_height 保持的是视频高度,拉伸视频宽度
reference 4.fill 全屏模式,拉伸视频宽高
player_layout_id reference (播放器布局):目前默认布局 simple_exo_view.xml
controller_layout_id reference 控制器布局 默认有四种布局
reference 1.simple_exo_playback_control_view.xml 视频封面控制布局下面,(默认)
reference 2.simple_exo_playback_list_view.xml.xml 在列表播放使用控制布局
reference 3.simple_exo_playback_top_view.xml.xml 视频封面控制布局上面
reference 4.exo_playback_control_view.xml exo 提供默认风格
player_replay_layout_id reference 设置 自定义重播布局文件
player_error_layout_id reference 设置 自定义错误布局文件
player_hint_layout_id reference 设置 自定义非wifi提示布局文件
player_load_layout_id reference 设置 自定义视频加载布局文件
player_gesture_audio_layout_id reference 设置 自定义手势音频调节布局
player_gesture_bright_layout_id reference 设置 自定义手势亮度调节布局
player_gesture_progress_layout_id reference 设置 自定义手势进度调节布局
player_preview_layout_id reference 设置 自定义封面图布局(默认 exo_default_preview_layout.xml)
player_list boolean 设置 是否指定列表播放 默认 false true 列表播放
player_fullscreen_image_selector reference 设置 自定义全屏按钮selector
player_back_image reference 设置 自定义返回按钮图标
default_artwork reference 设置 封面占位图
show_timeout integer 设置 控制布局隐藏时间 默认值为3秒
fastforward_increment integer 设置 按钮设置快进增量,以毫秒为单位(exo控制布局使用)
rewind_increment integer 设置 按钮设置快退增量,以毫秒为单位(exo控制布局使用)
user_watermark reference 设置 水印图片 默认在右上角
  • 注意:

    1.列表播放只能选择texture_view 不能选择surface_view,详情页面播放推荐surface_view

    2.自定义全屏按钮selector

      <selector xmlns:android="http://schemas.android.com/apk/res/android">
           <item android:drawable="@drawable/ic_custom_full" android:state_checked="true" />
           <item android:drawable="@drawable/ic_custom_full_in" android:state_checked="false" />
      </selector>

    3.自定义封面图布局中,也包含封面图控件。所以自定义封面图布局后,就不要再的控制布局使用封面图控件

3.快速自定义视频进度控件颜色

如何自定义视频进度控件--->戳我 在app的module的values 文件下-> colors.xml 文件里

  <!--视频加载缓存进度的颜色-->
  <color name="timeBar_buffered_color">@color/light_green</color>
  <!--已经播放过视频的颜色-->
  <color name="timeBar_played_color">#c63020</color>
  <!--没有加载过进度的颜色-->
  <color name="timeBar_unplayed_color">@color/live_yellow</color>
  <!--视频进度圆点的颜色-->
  <color name="timeBar_scrubber_color">@color/colorAccent</color>
  

4.修改网络对话框提示文字内容

  app.strings.xml
  <string name="exo_play_reminder">您当前网络不是wifi,是否继续观看视频</string>
  <string name="exo_play_wifi_hint_no">提示</string>

5.在功能清单声明 AndroidManifest.xml

在activity节点 加上“android:configChanges="orientation|keyboardHidden|screenSize"”
 如下实例:
        <activity android:name="chuangyuan.ycj.yjplay.MainListActivity"
         android:configChanges="orientation|keyboardHidden|screenSize"
         android:screenOrientation="portrait">

3.JAVA 代码

1 播放控制类

1.ExoUserPlayer 基本播放父类,实现基本播放,设置setPlayUri();
2.GestureVideoPlayer  具有手势操作播放(调节亮度和视频进度,和音量)
2.ManualPlayer  点击开始按钮播放,具有手势功能,和列表播放

2 VideoPlayerView 控件 可用方法

name type info
setTitle("标题") void 设置视频标题
setExoPlayWatermarkImg(R.mipmap.watermark_big) void 设置添加水印图片
setPreviewImage(Bitmap) void 设置封面图
setPreviewImage(R.res.image) void 设置封面图
setPreviewImage(R.res.image) void 设置封面图
getPreviewImage() ImageView 设置封面图控件
setPreviewImage(R.res.image) void 设置封面图

更多方法参考demo用法。

3 播放代码

              //实例化
     ExoUserPlayer exoPlayerManager = new VideoPlayerManager.Builder(VideoPlayerManager.TYPE_PLAY_MANUAL, videoPlayerView)
                      .setDataSource(new DataSource(this))
                      //加载rtmp 协议视频
                      .setPlayUri("rtmp://live.hkstv.hk.lxdns.com/live/hks")
                      //加载m3u8
                      .setPlayUri("http://dlhls.cdn.zhanqi.tv/zqlive/35180_KUDhx.m3u8")
                      //加载ts.文件
                      .setPlayUri("http://185.73.239.15:25461/live/1/1/924.ts")
                      //播放本地视频
                      .setPlayUri("/storage/emulated/0/DCIM/Camera/VID_20170717_011150.mp4")
                      //播放列表视频
                      .setPlayUri(listss);
                      //设置开始播放进度
                      .setPosition(1000)
                      //示例本地路径 或者 /storage/emulated/0/DCIM/Camera/VID_20180215_131926.mp4
                      .setPlayUri(Environment.getExternalStorageDirectory().getAbsolutePath()+"/VID_20170925_154925.mp4")
                      //开启线路设置
                      .setShowVideoSwitch(true)
                      .setPlaySwitchUri(0,test,name)
                      .setPlaySwitchUri(0, 0, getString(R.string.uri_test_11), Arrays.asList(test), Arrays.asList(name))
                      //设置播放视频倍数  快进播放和慢放播放
                      .setPlaybackParameters(0.5f, 0.5f)
                      //是否屏蔽进度控件拖拽快进视频(例如广告视频,(不允许用户))
                      .setSeekBarSeek(false)
                      //设置视循环播放
                      .setLooping(10)
                      //视频进度回调
                       .addOnWindowListener(new VideoWindowListener() {
                                         @Override
                                         public void onCurrentIndex(int currentIndex, int windowCount) {
                                             Toast.makeText(getApplication(), currentIndex + "windowCount:" + windowCount,                                                    Toast.LENGTH_SHORT).show();
                                         }
                                     })
                      .addOnWindowListener(new VideoWindowListener() {
                          @Override
                          public void onCurrentIndex(int currentIndex, int windowCount) {
                              Toast.makeText(getApplication(), currentIndex + "windowCount:" + windowCount, Toast.LENGTH_SHORT)                                             .show();
                          }
                      })
                      .addVideoInfoListener(new VideoInfoListener() {
                          ·····
                      })
                      //创建
                       .create()
                         //播放视频
                      .startPlayer();

1.实例化播放控制类

      //手势和自定义点击播放播放控制器创建
      ManualPlayer exoPlayerManager = new VideoPlayerManager.Builder(VideoPlayerManager.TYPE_PLAY_MANUAL, videoPlayerView).create();
      //手势播放控制器创建
      GestureVideoPlayer exoPlayerManager = new VideoPlayerManager.Builder(VideoPlayerManager.TYPE_PLAY_GESTURE, videoPlayerView).create();
      //基本播放控制器创建
      ExoUserPlayer exoPlayerManager = new VideoPlayerManager.Builder(VideoPlayerManager.TYPE_PLAY_USER, videoPlayerView).create();

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

     ManualPlayer exoPlayerManager = new VideoPlayerManager.Builder(VideoPlayerManager.TYPE_PLAY_MANUAL, videoPlayerView)
                                                    .setDataSource(new DataSource(this))
                                                    .create();
     ManualPlayer exoPlayerManager =  new VideoPlayerManager.Builder(VideoPlayerManager.TYPE_PLAY_MANUAL, videoPlayerView)
                                                      .setDataSource(mediaSourceBuilder)
                                                      .create();
     定义多媒体
     MediaSourceBuilder   mediaSourceBuilder=new MediaSourceBuilder(this,new DataSource(getApplication()));
    集成smoothstreaming,dash,hls
     WholeMediaSource   mediaSourceBuilder=new MediaSourceBuilder(this,new DataSource(getApplication()));  
     ManualPlayer   exoPlayerManager =new VideoPlayerManager.Builder(VideoPlayerManager.TYPE_PLAY_MANUAL, videoPlayerView)
                                                        .setDataSource(mediaSourceBuilder)
                                                        .create();

4 ManualPlayer播放管理类可用方法

name type info
setPosition(1000) void 设置开始播放进度
setPosition(windowIndex,1000) void 设置设置当前窗口位置,开始播放进度
setPlayUri("http:...m3u8"); void 设置视频路径
setPlayUri(Uri.parse("uri")) void 设置开始播放进度
setShowVideoSwitch(true) void 设置开启多线路设置,默认关闭
setLoadModel(LoadModelType.PERCENR) void 设置视频加载提示显示模式(默认LoadModelType.SPEED (网速模式))
setPlaybackParameters(2f,2f) void 设置播放视频倍数 快放和慢放播放 小于1 慢放 大于1 快放
startPlayer() void 开始播放视频

更多方法参考demo用法。

注意

1.exoPlayerManager.setPlayUri(Environment.getExternalStorageDirectory().getAbsolutePath()+"/test.h264"); 本地视频 2.设置多线路播放

           开启多线路设置,默认关闭
           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(0,test,name);
           多分辨路和广告视频设置
           exoPlayerManager.setPlaySwitchUri(0, 0, getString(R.string.uri_test_11), Arrays.asList(test), Arrays.asList(name));
       

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

      /**需要添加参数就行**/
        第一个参数代表是广告视频位置索引
        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();

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

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

5.设置监听回调VideoInfoListener

     exoPlayerManager.addVideoInfoListener(new VideoInfoListener() {
                   @Override
                   public void onPlayStart() {
                         //开始播放
                   }

                   @Override
                   public void onLoadingChanged() {
                             //加载变化
                   }

                   @Override
                   public void onPlayerError(ExoPlaybackException e) {
                             //加载错误
                  }

                   @Override
                   public void onPlayEnd() {
                          //播放结束
                   }
                   @Override
                   public void onRepeatModeChanged(int repeatMode) {
                       //模式变化
                   }
               });

6.覆写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();
             }
            }

三.列表使用说明-->戳我

四.数据源工厂类

1.默认数据源

      缓存 : CacheDataSourceFactory
      http : DefaultDataSourceFactory,DefaultHttpDataSourceFactory
      Priority : PriorityDataSourceFactory

2 ExoPlayer自定义数据源引用(根据自己需求选用)

  compile 'com.google.android.exoplayer:extension-okhttp:2.8.2'
  compile 'com.google.android.exoplayer:extension-rtmp:2.8.2'
  compile 'com.google.android.exoplayer:extension-gvr:2.8.2'
  compile 'com.google.android.exoplayer:extension-cast:2.8.2'
  compile 'com.google.android.exoplayer:extension-mediasession:2.8.2'
  compile 'com.google.android.exoplayer:extension-ima:2.8.2'
  compile 'com.google.android.exoplayer:extension-leanback:2.8.2'

五.自定义数据源用法-戳我

六.自定义布局用法-戳我

七.自定义MediaSource用法-戳我

八.缓存,加密,视频处理用法-戳我

混淆声明

-dontwarn chuangyuan.ycj.**

-keep class chuangyuan.ycj.** { *;}

License

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "{}" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright {yyyy} {name of copyright owner} Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

简介

一个支持自定义UI布局,流式API, 加密,直播 ,亮度,音量,快进等手势 ,广告视频预览,多种加载模式 ,多种分辨率切换 ,多种封面图, 自定义数据源,列表播放,倍数播放,边播变缓存<font color="red">不是使用AndroidVideoCache</font>,离线播放,神奇的播放器 展开 收起
Android
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Android
1
https://gitee.com/yangchaojiang0515/yjPlay.git
git@gitee.com:yangchaojiang0515/yjPlay.git
yangchaojiang0515
yjPlay
yjPlay
master

搜索帮助

14c37bed 8189591 565d56ea 8189591