提交 28425772 编写于 作者: G guoshuyu

* ijkPlayer的ex_so增加avi支持

* update ExoPlayer to 2.8.1
* ExoPlayer模式的问题修复
上级 f7a41536
......@@ -127,6 +127,13 @@ IJK编码格式|**[--- 项目支持视频格式(如果遇上黑屏,没声音
## 五、近期版本
### 5.0.1(2018-xx-xx 未发布)
* Update ListGSYVideoPlayer
* ijkPlayer的ex_so增加avi支持
* update ExoPlayer to 2.8.1
* ExoPlayer模式的问题修复
### 5.0.0-beta(2018-05-24)
* 调整cache机制,抽离cache管理器。
* update ExoPlayer to 2.8.0,全面针对ExoPlayer进行优化
......
......@@ -239,6 +239,7 @@ public class DetailPlayer extends AppCompatActivity {
//String url = "ijkhttphook:https://res.exexm.com/cw_145225549855002";
String url = "http://7xjmzj.com1.z0.glb.clouddn.com/20171026175005_JObCxCE2.mp4";
//String url = "http://223.110.243.138/PLTV/2510088/224/3221227177/index.m3u8";
//String url = "http://qiniu.carmmi.com/image/132451525666042.mp4";
//String url = "http://ucp.wn.sunmath.cn/file-upload/gYQJHxK9iNQKJeWyS/V80418-103803.mp4?rc_uid=7sCFCGoaF2iTc9vH9&rc_token=prJK-xGutKmy2LDQO-OZASjob0o1u_s3e5SgMHmgjtn";
//String url = "http://7xse1z.com1.z0.glb.clouddn.com/1491813192";
......
......@@ -29,7 +29,7 @@ public class GSYApplication extends MultiDexApplication {
//GSYVideoType.enableMediaCodecTexture();
//GSYVideoManager.instance().setVideoType(this, GSYVideoType.IJKEXOPLAYER); //EXO 1 播放内核,弃用
//GSYVideoManager.instance().setVideoType(this, GSYVideoType.IJKEXOPLAYER2); //EXO 2 播放内核
GSYVideoManager.instance().setVideoType(this, GSYVideoType.IJKEXOPLAYER2); //EXO 2 播放内核
//GSYVideoManager.instance().setVideoType(this, GSYVideoType.SYSTEMPLAYER); //系统播放器
//GSYVideoType.setShowType(GSYVideoType.SCREEN_MATCH_FULL);
......
......@@ -228,4 +228,8 @@ public class GSYExoPlayerManager implements IPlayerManager {
return 1;
}
@Override
public boolean isSurfaceSupportLockCanvas() {
return false;
}
}
......@@ -31,7 +31,7 @@ ext {
gsyVideoVersion = '5.0.0-beta'
exo_player2 = '2.8.0'
exo_player2 = '2.8.1'
permissionsdispatcher = '3.2.0'
......
package com.shuyu.gsyvideoplayer;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Handler;
import android.os.HandlerThread;
......@@ -533,6 +534,15 @@ public abstract class GSYVideoBaseManager implements IMediaPlayer.OnPreparedList
return IMediaPlayer.MEDIA_INFO_VIDEO_ROTATION_CHANGED;
}
@Override
public boolean isSurfaceSupportLockCanvas() {
if (playerManager != null) {
return playerManager.isSurfaceSupportLockCanvas();
}
return false;
}
protected void sendMessage(Message message) {
mMediaHandler.sendMessage(message);
}
......
......@@ -227,4 +227,8 @@ public class Exo2PlayerManager implements IPlayerManager {
return 1;
}
@Override
public boolean isSurfaceSupportLockCanvas() {
return false;
}
}
......@@ -63,6 +63,12 @@ public interface IPlayerManager {
*/
void setSpeedPlaying(float speed, boolean soundTouch);
/**
* Surface是否支持外部lockCanvas,来自定义暂停时的绘制画面
* exoplayer目前不支持,因为外部lock后,切换surface会导致异常
*/
boolean isSurfaceSupportLockCanvas();
void setSpeed(float speed, boolean soundTouch);
void start();
......
......@@ -272,6 +272,12 @@ public class IjkPlayerManager implements IPlayerManager {
return 1;
}
@Override
public boolean isSurfaceSupportLockCanvas() {
return true;
}
private void initIJKOption(IjkMediaPlayer ijkMediaPlayer, List<VideoOptionModel> optionModelList) {
if (optionModelList != null && optionModelList.size() > 0) {
for (VideoOptionModel videoOptionModel : optionModelList) {
......
......@@ -209,6 +209,10 @@ public class SystemPlayerManager implements IPlayerManager {
return 1;
}
@Override
public boolean isSurfaceSupportLockCanvas() {
return false;
}
private void setSpeed(float speed) {
if (release) {
......
......@@ -177,15 +177,17 @@ public abstract class GSYVideoView extends GSYTextureRenderView implements GSYMe
if (mCurrentState == CURRENT_STATE_PAUSE && mFullPauseBitmap != null
&& !mFullPauseBitmap.isRecycled() && mShowPauseCover
&& mSurface != null && mSurface.isValid()) {
try {
RectF rectF = new RectF(0, 0, mTextureView.getWidth(), mTextureView.getHeight());
Canvas canvas = mSurface.lockCanvas(new Rect(0, 0, mTextureView.getWidth(), mTextureView.getHeight()));
if (canvas != null) {
canvas.drawBitmap(mFullPauseBitmap, null, rectF, null);
mSurface.unlockCanvasAndPost(canvas);
if (getGSYVideoManager().isSurfaceSupportLockCanvas()) {
try {
RectF rectF = new RectF(0, 0, mTextureView.getWidth(), mTextureView.getHeight());
Canvas canvas = mSurface.lockCanvas(new Rect(0, 0, mTextureView.getWidth(), mTextureView.getHeight()));
if (canvas != null) {
canvas.drawBitmap(mFullPauseBitmap, null, rectF, null);
mSurface.unlockCanvasAndPost(canvas);
}
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
}
......
......@@ -145,4 +145,10 @@ public interface GSYVideoViewBridge {
int getVideoSarNum();
int getVideoSarDen();
/**
* Surface是否支持外部lockCanvas,来自定义暂停时的绘制画面
* exoplayer目前不支持,因为外部lock后,切换surface会导致异常
*/
boolean isSurfaceSupportLockCanvas();
}
......@@ -110,6 +110,7 @@ export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=webm_dash_mani
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=mpeg4"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=rtsp"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=mjpeg"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=avi"
# ./configure --list-parsers
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-parsers"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册