提交 088d1041 编写于 作者: S shuyu

v1.5.6

* 修复了mUrl再error后为空的问题。
* 增加了GSYVideoManager的option配置接口。
上级 2b07169c
......@@ -42,7 +42,7 @@ allprojects {
```
dependencies {
compile 'com.github.CarGuo:GSYVideoPlayer:v1.5.5'
compile 'com.github.CarGuo:GSYVideoPlayer:v1.5.6'
}
```
......@@ -84,6 +84,17 @@ dependencies {
## 近期版本
### 1.5.6
* 修复了mUrl再error后为空的问题。
* 增加了GSYVideoManager的option配置接口。
```
/**
* 设置IJK视频的option
*/
public void setOptionModelList(List<VideoOptionModel> optionModelList)
```
### 1.5.5
* update ijk 0.7.6。
* 快播与慢播接口支持M以下。
......@@ -101,14 +112,6 @@ GSYVideoManager下
public void setNeedMute(boolean needMute)
```
### 1.5.3
* 修改了在缓冲的时候,默认loading点击会重置的问题。
* 虚拟按键在弹出的后,过一段时间自动隐藏。
### 1.5.2
* 增加了Error的回调接口。
* 修复了Demo的PlayActivity兼容问题。
### 更多版本请查阅:[版本更新说明](https://github.com/CarGuo/GSYVideoPlayer/blob/master/UPDATE_VERSION.md)
......
## 下方个版本说明,可以当做简单的wiki使用~,效果可参考DEMO。
### 1.5.6
* 修复了mUrl再error后为空的问题。
* 增加了GSYVideoManager的option配置接口。
```
/**
* 设置IJK视频的option
*/
public void setOptionModelList(List<VideoOptionModel> optionModelList)
```
### 1.5.5
* update ijk 0.7.6。
......
......@@ -17,6 +17,7 @@ import com.danikula.videocache.HttpProxyCacheServer;
import com.danikula.videocache.file.Md5FileNameGenerator;
import com.shuyu.gsyvideoplayer.listener.GSYMediaPlayerListener;
import com.shuyu.gsyvideoplayer.model.GSYModel;
import com.shuyu.gsyvideoplayer.model.VideoOptionModel;
import com.shuyu.gsyvideoplayer.utils.GSYVideoType;
import com.shuyu.gsyvideoplayer.utils.CommonUtil;
import com.shuyu.gsyvideoplayer.utils.Debuger;
......@@ -26,6 +27,8 @@ import com.shuyu.gsyvideoplayer.utils.StorageUtils;
import java.io.File;
import java.io.IOException;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import tv.danmaku.ijk.media.exo.IjkExoMediaPlayer;
......@@ -59,6 +62,8 @@ public class GSYVideoManager implements IMediaPlayer.OnPreparedListener, IMediaP
private WeakReference<GSYMediaPlayerListener> listener;
private WeakReference<GSYMediaPlayerListener> lastListener;
private List<VideoOptionModel> optionModelList;//配置ijk option
private HttpProxyCacheServer proxy; //视频代理
private File cacheFile;
......@@ -282,6 +287,7 @@ public class GSYVideoManager implements IMediaPlayer.OnPreparedListener, IMediaP
if (((GSYModel) msg.obj).getSpeed() != 1 && ((GSYModel) msg.obj).getSpeed() > 0) {
((IjkMediaPlayer) mediaPlayer).setSpeed(((GSYModel) msg.obj).getSpeed());
}
initIJKOption((IjkMediaPlayer) mediaPlayer);
} catch (IOException e) {
e.printStackTrace();
}
......@@ -297,6 +303,20 @@ public class GSYVideoManager implements IMediaPlayer.OnPreparedListener, IMediaP
}
}
private void initIJKOption(IjkMediaPlayer ijkMediaPlayer) {
if (optionModelList != null && optionModelList.size() > 0) {
for (VideoOptionModel videoOptionModel : optionModelList) {
if (videoOptionModel.getValueType() == VideoOptionModel.VALUE_TYPE_INT) {
ijkMediaPlayer.setOption(videoOptionModel.getCategory(),
videoOptionModel.getName(), videoOptionModel.getValueInt());
} else {
ijkMediaPlayer.setOption(videoOptionModel.getCategory(),
videoOptionModel.getName(), videoOptionModel.getValueString());
}
}
}
}
private void showDisplay(Message msg) {
if (msg.obj == null && mediaPlayer != null) {
......@@ -506,6 +526,17 @@ public class GSYVideoManager implements IMediaPlayer.OnPreparedListener, IMediaP
return videoType;
}
public List<VideoOptionModel> getOptionModelList() {
return optionModelList;
}
/**
* 设置IJK视频的option
*/
public void setOptionModelList(List<VideoOptionModel> optionModelList) {
this.optionModelList = optionModelList;
}
/**
* 设置了视频的播放类型
* GSYVideoType IJKPLAYER = 0 or IJKEXOPLAYER = 1;
......
......@@ -233,15 +233,17 @@ public abstract class GSYVideoPlayer extends GSYBaseVideoPlayer implements View.
public boolean setUp(String url, boolean cacheWithPlay, File cachePath, Object... objects) {
mCache = cacheWithPlay;
mCachePath = cachePath;
mOriginUrl = url;
if (isCurrentMediaListener() &&
(System.currentTimeMillis() - CLICK_QUIT_FULLSCREEN_TIME) < FULL_SCREEN_NORMAL_DELAY)
return false;
mCurrentState = CURRENT_STATE_NORMAL;
if (cacheWithPlay && url.startsWith("http") && !url.contains("127.0.0.1")) {
mOriginUrl = url;
HttpProxyCacheServer proxy = GSYVideoManager.getProxy(getContext().getApplicationContext(), cachePath);
//此处转换了url,然后再赋值给mUrl。
url = proxy.getProxyUrl(url);
mCacheFile = (!url.startsWith("http"));
//注册上缓冲监听
if (!mCacheFile && GSYVideoManager.instance() != null) {
proxy.registerCacheListener(GSYVideoManager.instance(), mOriginUrl);
}
......
package com.shuyu.gsyvideoplayer.model;
/**
* Created by guoshuyu on 2017/1/11.
* 配置ijk option用的
*/
public class VideoOptionModel {
public static final int VALUE_TYPE_INT = 0;
public static final int VALUE_TYPE_STRING = 1;
//你设置的value是int还是string,ijk的option value 对应。
int valueType = VALUE_TYPE_INT;
int category;
int valueInt;
String name;
String valueString;
public VideoOptionModel(int category, String name, int value) {
super();
this.category = category;
this.name = name;
this.valueInt = value;
valueType = VALUE_TYPE_INT;
}
public VideoOptionModel(int category, String name, String value) {
super();
this.category = category;
this.name = name;
this.valueString = value;
valueType = VALUE_TYPE_STRING;
}
public int getValueType() {
return valueType;
}
public void setValueType(int valueType) {
this.valueType = valueType;
}
public int getCategory() {
return category;
}
public void setCategory(int category) {
this.category = category;
}
public int getValueInt() {
return valueInt;
}
public void setValueInt(int valueInt) {
this.valueInt = valueInt;
valueType = VALUE_TYPE_INT;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValueString() {
return valueString;
}
public void setValueString(String valueString) {
this.valueString = valueString;
valueType = VALUE_TYPE_STRING;
}
}
......@@ -346,7 +346,7 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia
gsyVideoPlayer.mCacheFile = mCacheFile;
gsyVideoPlayer.mFullPauseBitmap = mFullPauseBitmap;
gsyVideoPlayer.mNeedShowWifiTip = mNeedShowWifiTip;
gsyVideoPlayer.setUp(mUrl, mCache, mCachePath, mMapHeadData, mObjects);
gsyVideoPlayer.setUp(mOriginUrl, mCache, mCachePath, mMapHeadData, mObjects);
gsyVideoPlayer.setStateAndUi(mCurrentState);
gsyVideoPlayer.addTextureView();
......@@ -515,7 +515,7 @@ public abstract class GSYBaseVideoPlayer extends FrameLayout implements GSYMedia
vp.addView(frameLayout, lpParent);
gsyVideoPlayer.mHadPlay = mHadPlay;
gsyVideoPlayer.setUp(mUrl, mCache, mCachePath, mMapHeadData, mObjects);
gsyVideoPlayer.setUp(mOriginUrl, mCache, mCachePath, mMapHeadData, mObjects);
gsyVideoPlayer.setStateAndUi(mCurrentState);
gsyVideoPlayer.addTextureView();
//隐藏掉所有的弹出状态哟
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册