提交 cafe3414 编写于 作者: G guoshuyu

多重播放 (2017-09-29)

上级 f445fb01
......@@ -8,9 +8,10 @@
**支持**|**边播边缓存,使用了[AndroidVideoCache](https://github.com/danikula/AndroidVideoCache)。**
**支持**|**其他协议和编码concat、rtsp、hls、rtmp、crypto、mpeg等。**
**支持**|**DEMO演示获取视频第一帧等实现。**
**支持**|**简单滤镜(内置黑白、色彩过滤、高斯、模糊、模糊等等20多种)。**
**支持**|**简单滤镜(马赛克、黑白、色彩过滤、高斯、模糊、模糊等等20多种)。**
**支持**|**GL效果动画,(xyz轴旋转,放大)。**
**支持**|**视频帧截图功能**
**支持**|**视频播放效果(水印、画面多重播放等)**
**支持**|**列表播放;列表连续播放;重力旋转与手动旋转;视频本身rotation旋转属性。**
**支持**|**全屏切换动画效果;小窗口播放,可拖动。**
**支持**|**快播和慢播;网络视频加载速度。**
......
......@@ -17,6 +17,7 @@ import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.example.gsyvideoplayer.effect.BitmapIconEffect;
import com.example.gsyvideoplayer.effect.GSYVideoGLViewCustomRender;
import com.example.gsyvideoplayer.effect.GSYVideoGLViewCustomRender2;
import com.example.gsyvideoplayer.effect.PixelationEffect;
import com.example.gsyvideoplayer.utils.CommonUtil;
import com.example.gsyvideoplayer.video.SampleControlVideo;
......@@ -140,12 +141,17 @@ public class DetailFilterActivity extends GSYBaseActivityDetail {
//自定义render需要在播放器开始播放之前,播放过程中不允许切换render
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
//水印图效果
/*Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
mGSYVideoGLViewCustomRender = new GSYVideoGLViewCustomRender();
mCustomBitmapIconEffect = new BitmapIconEffect(bitmap, dp2px(50), dp2px(50), 0.6f);
mGSYVideoGLViewCustomRender.setBitmapEffect(mCustomBitmapIconEffect);
detailPlayer.setCustomGLRenderer(mGSYVideoGLViewCustomRender);
detailPlayer.setCustomGLRenderer(mGSYVideoGLViewCustomRender);*/
//多窗口播放效果
//detailPlayer.setEffectFilter(new GammaEffect(0.8f));
//detailPlayer.setCustomGLRenderer(new GSYVideoGLViewCustomRender2());
changeFilter.setOnClickListener(new View.OnClickListener() {
@Override
......@@ -184,11 +190,11 @@ public class DetailFilterActivity extends GSYBaseActivityDetail {
percentageType = 1;
}
//水印图动起来
cancelTask2();
/*cancelTask2();
mTimerTask2 = new TaskLocal2();
timer.schedule(mTimerTask2, 0, 400);
moveBitmap = !moveBitmap;
moveBitmap = !moveBitmap;*/
}
});
}
......
package com.example.gsyvideoplayer.effect;
import android.annotation.SuppressLint;
import android.opengl.GLES20;
import android.opengl.Matrix;
import com.shuyu.gsyvideoplayer.render.GSYVideoGLViewSimpleRender;
import javax.microedition.khronos.opengles.GL10;
/**
* 双重播放效果
*/
@SuppressLint("ViewConstructor")
public class GSYVideoGLViewCustomRender2 extends GSYVideoGLViewSimpleRender {
public GSYVideoGLViewCustomRender2() {
super();
}
@Override
public void onDrawFrame(GL10 glUnused) {
super.onDrawFrame(glUnused);
float[] transform = new float[16];
Matrix.setIdentityM(transform, 0);
Matrix.scaleM(transform, 0, 0.8f, 1, 1);
GLES20.glUniformMatrix4fv(getMuMVPMatrixHandle(), 1, false, transform, 0);
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4);
GLES20.glFinish();
}
}
......@@ -35,7 +35,7 @@ public class GSYVideoGLViewSimpleRender extends GSYVideoGLViewBaseRender {
private static final int TRIANGLE_VERTICES_DATA_UV_OFFSET = 3;
private static final int GL_TEXTURE_EXTERNAL_OES = 0x8D65;
protected static final int GL_TEXTURE_EXTERNAL_OES = 0x8D65;
private final float[] mTriangleVerticesData = {
// X, Y, Z, U, V
......@@ -250,6 +250,34 @@ public class GSYVideoGLViewSimpleRender extends GSYVideoGLViewBaseRender {
return mProgram;
}
public int getMuMVPMatrixHandle() {
return muMVPMatrixHandle;
}
public int getMuSTMatrixHandle() {
return muSTMatrixHandle;
}
public int getMaPositionHandle() {
return maPositionHandle;
}
public int getMaTextureHandle() {
return maTextureHandle;
}
public float[] getMVPMatrix() {
return mMVPMatrix;
}
public float[] getSTMatrix() {
return mSTMatrix;
}
public int[] getTextureID() {
return mTextureID;
}
protected String getVertexShader() {
return mVertexShader;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册