提交 0f99fac3 编写于 作者: S shuyu

1.6.0 (2017-02-19)

* update ijkplayer to 0.7.7.1。
* 增加了弹幕demo,主要演示如何快速集成弹幕功能。
* 修改了播放时可能出现loading不消失问题。
* 修复了全屏和退出全屏图片显示错误问题。
* 全屏切换按键的图片资源支持自定义。
上级 0e6ca040
09.gif

512.3 KB

......@@ -13,10 +13,14 @@ allprojects {
 项目最外部有一个dependencies.gradle,所有的项目依赖都在这里面,然后参考项目根目录的build.gradle,在最顶部有apply from: 'dependencies.gradle',这样gsyVideoPlayer就可以找到对应的依赖了。gradle方便可参考察[Android蹲坑的疑难杂症集锦(兼Gradle) 二](http://www.jianshu.com/p/86e4b336c17d)
其次,因为so有五个平台,远程依赖库比较大,依赖的时候如果有条件,可以开启vpn,用L2TP协议,依赖下载会快一些。
#### 2、ClassNotFoundException和混淆
 确保你的拆包Application配置正常,若是开启混淆,确保混淆已经添加 。
而且有时候你需要的是clear一下。
```
-keep class tv.danmaku.ijk.** { *; }
-dontwarn tv.danmaku.ijk.**
......@@ -25,11 +29,15 @@ allprojects {
```
#### 3、找不到对应的so
#### 3、找不到对应的so或者链接so错误。
可以配置ndk abiFilters,确保使用到的so文件夹下都有对用的so文件,用Analyze Apk查看so是否应打包到各个文件夹。
参考[#issue23](https://github.com/CarGuo/GSYVideoPlayer/issues/23)
参考[#issue24](https://github.com/CarGuo/GSYVideoPlayer/issues/24)
是否已经添加下方的代码到gradle
```
android {
......@@ -49,6 +57,14 @@ android {
}
```
```
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
```
#### 3、全屏的时候自动停止了
 是否监听了列表滑动了,在监听里更新了列表之类的。
......@@ -62,6 +78,7 @@ android {
https://github.com/Bilibili/ijkplayer/issues/2541
https://github.com/Bilibili/ijkplayer/pull/1875
#### 5、m3u8\HLS的格式视频请关闭cache
缓存不支持m3u8\HLS,播放m3u8\HLS格式,需要cacheWithPlay为false
......@@ -86,4 +103,13 @@ setUp(String url, boolean cacheWithPlay····)
#### 9、如何设置cookie。
在setUp的时候,设置带有 Map<String, String> mapHeadData 参数的方法,在Ijk内部其实就是转为setOption方法。
可参考ijkPlayer的[issues-1150](https://github.com/Bilibili/ijkplayer/issues/1150)
\ No newline at end of file
可参考ijkPlayer的[issues-1150](https://github.com/Bilibili/ijkplayer/issues/1150)
#### 10、多个分片播放的功能,请查阅:
[issue64](https://github.com/CarGuo/GSYVideoPlayer/issues/64)
[issue490](https://github.com/Bilibili/ijkplayer/issues/490)
[分片播放资料](http://www.jianshu.com/p/ea794a357b48)
#### 11、有画面没声音,有声音没画面。
这种情况一般都是so里没有打包支持的格式,如果需要支持你想要的格式,可以自己重新编译so,在module配置文件加上需要额外支持的格式。github首页有编译教程。
......@@ -22,6 +22,7 @@
* **Https支持。**
* **连续播放一个列表的视频。**
* **支持全屏与非全屏两套布局切换**
* **弹幕支持**
[![](https://jitpack.io/v/CarGuo/GSYVideoPlayer.svg)](https://jitpack.io/#CarGuo/GSYVideoPlayer)
[![Build Status](https://travis-ci.org/CarGuo/GSYVideoPlayer.svg?branch=master)](https://travis-ci.org/CarGuo/GSYVideoPlayer)
......@@ -42,12 +43,14 @@ allprojects {
```
dependencies {
compile 'com.github.CarGuo:GSYVideoPlayer:v1.5.9'
compile 'com.github.CarGuo:GSYVideoPlayer:v1.6.0'
}
```
### 请阅读下方文档以及问题集锦,你想要知道的大部分都在里面。
### 下方文档以及问题集锦,你想要知道的大部分都在里面。
### 有问题请先下面问题集锦中查阅(如依赖不成功,播放不成功等等)。
### QQ群,有兴趣的可以进来,无底线欢迎:174815284 。
......@@ -82,14 +85,40 @@ dependencies {
<img src="https://github.com/CarGuo/GSYVideoPlayer/blob/master/05.gif" width="240px" height="426px"/>
<img src="https://github.com/CarGuo/GSYVideoPlayer/blob/master/04.gif" width="240px" height="426px"/>
* ### 3、进度条小窗口预览
* ### 3、弹幕
<img src="https://github.com/CarGuo/GSYVideoPlayer/blob/master/09.gif" width="240px" height="426px"/>
* ### 4、进度条小窗口预览
<img src="https://github.com/CarGuo/GSYVideoPlayer/blob/master/07.gif" width="426px" height="240px"/>
## 近期版本
### 1.5.9 (2017-02-04)
* update ijkplayer to 0.7.7
* update build.gradle to 2.2.3
### 1.6.0 (2017-02-19)
* update ijkplayer to 0.7.7.1。
* 增加了弹幕demo,主要演示如何快速集成弹幕功能。
* 修改了播放时可能出现loading不消失问题。
* 修复了全屏和退出全屏图片显示错误问题。
* 全屏切换按键的图片资源支持自定义。
```
/**
* 设置右下角 显示切换到全屏 的按键资源
* 必须在setUp之前设置
* 不设置使用默认
*/
public void setEnlargeImageRes(int mEnlargeImageRes)
/**
* 设置右下角 显示退出全屏 的按键资源
* 必须在setUp之前设置
* 不设置使用默认
*/
public void setShrinkImageRes(int mShrinkImageRes)
```
### 更多版本请查阅:[版本更新说明](https://github.com/CarGuo/GSYVideoPlayer/blob/master/UPDATE_VERSION.md)
......
## 下方个版本说明,可以当做简单的wiki使用~,效果可参考DEMO。
### 1.6.0 (2017-02-19)
* update ijkplayer to 0.7.7.1。
* 增加了弹幕demo,主要演示如何快速集成弹幕功能。
* 修改了播放时可能出现loading不消失问题。
* 修复了全屏和退出全屏图片显示错误问题。
* 全屏切换按键的图片资源支持自定义。
```
/**
* 设置右下角 显示切换到全屏 的按键资源
* 必须在setUp之前设置
* 不设置使用默认
*/
public void setEnlargeImageRes(int mEnlargeImageRes)
/**
* 设置右下角 显示退出全屏 的按键资源
* 必须在setUp之前设置
* 不设置使用默认
*/
public void setShrinkImageRes(int mShrinkImageRes)
```
### 1.5.9
* update ijkplayer to 0.7.7
* update build.gradle to 2.2.3
......
......@@ -48,6 +48,12 @@ public class DanmkuVideoActivity extends AppCompatActivity {
setContentView(R.layout.activity_danmaku_layout);
ButterKnife.bind(this);
//使用自定义的全屏切换图片,!!!注意xml布局中也需要设置为一样的
//必须在setUp之前设置
danmakuVideoPlayer.setShrinkImageRes(R.drawable.custom_shrink);
danmakuVideoPlayer.setEnlargeImageRes(R.drawable.custom_enlarge);
String url = "http://baobab.wdjcdn.com/14564977406580.mp4";
//String url = "https://res.exexm.com/cw_145225549855002";
danmakuVideoPlayer.setUp(url, true, null, "测试视频");
......@@ -71,6 +77,7 @@ public class DanmkuVideoActivity extends AppCompatActivity {
danmakuVideoPlayer.setLockLand(false);
danmakuVideoPlayer.setShowFullAnimation(false);
danmakuVideoPlayer.setNeedLockFull(true);
//detailPlayer.setOpenPreView(true);
danmakuVideoPlayer.getFullscreenButton().setOnClickListener(new View.OnClickListener() {
@Override
......
......@@ -21,6 +21,7 @@ import com.example.gsyvideoplayer.adapter.DanamakuAdapter;
import com.example.gsyvideoplayer.utils.BiliDanmukuParser;
import com.shuyu.gsyvideoplayer.GSYVideoManager;
import com.shuyu.gsyvideoplayer.GSYVideoPlayer;
import com.shuyu.gsyvideoplayer.utils.Debuger;
import com.shuyu.gsyvideoplayer.video.GSYBaseVideoPlayer;
import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer;
......@@ -127,9 +128,9 @@ public class DanmakuVideoPlayer extends StandardGSYVideoPlayer {
}
}
@Override
public void release() {
super.release();
public void onCompletion() {
releaseDanmaku(this);
}
......@@ -324,6 +325,7 @@ public class DanmakuVideoPlayer extends StandardGSYVideoPlayer {
*/
private void releaseDanmaku(DanmakuVideoPlayer danmakuVideoPlayer) {
if (danmakuVideoPlayer != null && danmakuVideoPlayer.getDanmakuView() != null) {
Debuger.printfError("release Danmaku!");
danmakuVideoPlayer.getDanmakuView().release();
}
}
......
......@@ -91,7 +91,7 @@
android:layout_height="match_parent"
android:paddingRight="10dp"
android:scaleType="center"
android:src="@drawable/video_enlarge" />
android:src="@drawable/custom_enlarge" />
</LinearLayout>
......
......@@ -186,7 +186,7 @@ public class ListVideoUtil {
viewGroup.removeView(gsyVideoPlayer);
}
gsyVideoPlayer.setIfCurrentIsFullscreen(true);
gsyVideoPlayer.getFullscreenButton().setImageResource(R.drawable.video_shrink);
gsyVideoPlayer.getFullscreenButton().setImageResource(gsyVideoPlayer.getShrinkImageRes());
gsyVideoPlayer.getBackButton().setVisibility(View.VISIBLE);
//设置旋转
orientationUtils = new OrientationUtils((Activity) context, gsyVideoPlayer);
......@@ -275,7 +275,7 @@ public class ListVideoUtil {
gsyVideoPlayer.setIfCurrentIsFullscreen(false);
fullViewContainer.setBackgroundColor(Color.TRANSPARENT);
listParent.addView(gsyVideoPlayer, listParams);
gsyVideoPlayer.getFullscreenButton().setImageResource(R.drawable.video_enlarge);
gsyVideoPlayer.getFullscreenButton().setImageResource(gsyVideoPlayer.getEnlargeImageRes());
gsyVideoPlayer.getBackButton().setVisibility(View.GONE);
gsyVideoPlayer.setIfCurrentIsFullscreen(false);
if (videoAllCallBack != null) {
......
......@@ -60,9 +60,9 @@ public class OrientationUtils {
screenType = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
if (gsyVideoPlayer.isIfCurrentIsFullscreen()) {
gsyVideoPlayer.getFullscreenButton().setImageResource(R.drawable.video_shrink);
gsyVideoPlayer.getFullscreenButton().setImageResource(gsyVideoPlayer.getShrinkImageRes());
} else {
gsyVideoPlayer.getFullscreenButton().setImageResource(R.drawable.video_enlarge);
gsyVideoPlayer.getFullscreenButton().setImageResource(gsyVideoPlayer.getEnlargeImageRes());
}
mIsLand = 0;
mClick = false;
......@@ -83,7 +83,7 @@ public class OrientationUtils {
if (!(mIsLand == 1)) {
screenType = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
gsyVideoPlayer.getFullscreenButton().setImageResource(R.drawable.video_shrink);
gsyVideoPlayer.getFullscreenButton().setImageResource(gsyVideoPlayer.getShrinkImageRes());
mIsLand = 1;
mClick = false;
}
......@@ -102,7 +102,7 @@ public class OrientationUtils {
} else if (!(mIsLand == 2)) {
screenType = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
gsyVideoPlayer.getFullscreenButton().setImageResource(R.drawable.video_shrink);
gsyVideoPlayer.getFullscreenButton().setImageResource(gsyVideoPlayer.getShrinkImageRes());
mIsLand = 2;
mClick = false;
}
......@@ -120,16 +120,16 @@ public class OrientationUtils {
if (mIsLand == 0) {
screenType = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
gsyVideoPlayer.getFullscreenButton().setImageResource(R.drawable.video_shrink);
gsyVideoPlayer.getFullscreenButton().setImageResource(gsyVideoPlayer.getShrinkImageRes());
mIsLand = 1;
mClickLand = false;
} else {
screenType = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
if (gsyVideoPlayer.isIfCurrentIsFullscreen()) {
gsyVideoPlayer.getFullscreenButton().setImageResource(R.drawable.video_shrink);
gsyVideoPlayer.getFullscreenButton().setImageResource(gsyVideoPlayer.getShrinkImageRes());
} else {
gsyVideoPlayer.getFullscreenButton().setImageResource(R.drawable.video_enlarge);
gsyVideoPlayer.getFullscreenButton().setImageResource(gsyVideoPlayer.getEnlargeImageRes());
}
mIsLand = 0;
mClickPort = false;
......@@ -145,7 +145,7 @@ public class OrientationUtils {
mClick = true;
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
if (gsyVideoPlayer != null)
gsyVideoPlayer.getFullscreenButton().setImageResource(R.drawable.video_enlarge);
gsyVideoPlayer.getFullscreenButton().setImageResource(gsyVideoPlayer.getEnlargeImageRes());
mIsLand = 0;
mClickPort = false;
return 500;
......
......@@ -72,6 +72,10 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia
protected int mRotate = 0; //针对某些视频的旋转信息做了旋转处理
protected int mShrinkImageRes = -1; //退出全屏显示的案件图片
protected int mEnlargeImageRes = -1; //全屏显示的案件图片
private int mSystemUiVisibility;
protected float mSpeed = 1;//播放速度,只支持6.0以上
......@@ -252,7 +256,7 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia
showNavKey(mContext, mSystemUiVisibility);
}
showSupportActionBar(mContext, mActionBar, mStatusBar);
getFullscreenButton().setImageResource(R.drawable.video_enlarge);
getFullscreenButton().setImageResource(getEnlargeImageRes());
}
/**
......@@ -347,11 +351,13 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia
gsyVideoPlayer.mCacheFile = mCacheFile;
gsyVideoPlayer.mFullPauseBitmap = mFullPauseBitmap;
gsyVideoPlayer.mNeedShowWifiTip = mNeedShowWifiTip;
gsyVideoPlayer.mShrinkImageRes = mShrinkImageRes;
gsyVideoPlayer.mEnlargeImageRes = mEnlargeImageRes;
gsyVideoPlayer.setUp(mOriginUrl, mCache, mCachePath, mMapHeadData, mObjects);
gsyVideoPlayer.setStateAndUi(mCurrentState);
gsyVideoPlayer.addTextureView();
gsyVideoPlayer.getFullscreenButton().setImageResource(R.drawable.video_shrink);
gsyVideoPlayer.getFullscreenButton().setImageResource(getShrinkImageRes());
gsyVideoPlayer.getFullscreenButton().setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
......@@ -720,4 +726,36 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia
public void setNeedShowWifiTip(boolean needShowWifiTip) {
this.mNeedShowWifiTip = needShowWifiTip;
}
public int getEnlargeImageRes() {
if (mShrinkImageRes == -1) {
return R.drawable.video_enlarge;
}
return mEnlargeImageRes;
}
/**
* 设置右下角 显示切换到全屏 的按键资源
* 必须在setUp之前设置
* 不设置使用默认
*/
public void setEnlargeImageRes(int mEnlargeImageRes) {
this.mEnlargeImageRes = mEnlargeImageRes;
}
public int getShrinkImageRes() {
if (mShrinkImageRes == -1) {
return R.drawable.video_shrink;
}
return mShrinkImageRes;
}
/**
* 设置右下角 显示退出全屏 的按键资源
* 必须在setUp之前设置
* 不设置使用默认
*/
public void setShrinkImageRes(int mShrinkImageRes) {
this.mShrinkImageRes = mShrinkImageRes;
}
}
......@@ -197,9 +197,9 @@ public class StandardGSYVideoPlayer extends GSYVideoPlayer {
mTitleTextView.setText(objects[0].toString());
}
if (mIfCurrentIsFullscreen) {
mFullscreenButton.setImageResource(R.drawable.video_shrink);
mFullscreenButton.setImageResource(getShrinkImageRes());
} else {
mFullscreenButton.setImageResource(R.drawable.video_enlarge);
mFullscreenButton.setImageResource(getEnlargeImageRes());
mBackButton.setVisibility(View.GONE);
}
return true;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册