AlphaPlayer
AlphaPlayer copied to clipboard
【Android】原视频上下布局已调试好了,但是就是色值上有明显的差异,麻烦帮忙看一下

上图:这是原视频里的一帧。 下图:合成后的效果,有点偏暗。

frag.sh
#extension GL_OES_EGL_image_external : require
precision mediump float;
varying vec2 vTextureCoord;
uniform samplerExternalOES sTexture;
void main() {
vec4 color = texture2D(sTexture, vTextureCoord);
vec4 color2Map = vec4(1.0, 1.0, 1.0, 1.0);
if (vTextureCoord.y < 0.5) {
color2Map = texture2D(sTexture, vec2(vTextureCoord.x, vTextureCoord.y + 0.5));
gl_FragColor = vec4(color.r, color.g, color.b, color2Map.g);
} else {
gl_FragColor = vec4(color.r, color.g, color.b, color.a);
}
}
vertex.sh
uniform mat4 uMVPMatrix;
uniform mat4 uSTMatrix;
attribute vec4 aPosition;
attribute vec4 aTextureCoord;
varying vec2 vTextureCoord;
void main() {
gl_Position = uMVPMatrix * aPosition;
vTextureCoord = (uSTMatrix * aTextureCoord).xy;
}
@sonuan 你是如何支持上下视频的?求教
@li-xiaojun
- 原来的 VideoRenderer的halfRightVerticeData 改成下面这样。
private var halfRightVerticeData = floatArrayOf( // X, Y, Z, U, V -1.0f, -1.0f, 0f, 0f, 0.5f, 1.0f, -1.0f, 0f, 1f, 0.5f, -1.0f, 1.0f, 0f, 0f, 1f, 1.0f, 1.0f, 0f, 1f, 1f )
- frag.sh修改
#extension GL_OES_EGL_image_external : require precision mediump float; varying vec2 vTextureCoord; uniform samplerExternalOES sTexture;
void main() { vec4 color = texture2D(sTexture, vTextureCoord); vec4 color2Map = vec4(1.0, 1.0, 1.0, 1.0); if (vTextureCoord.y < 0.5) { color2Map = texture2D(sTexture, vec2(vTextureCoord.x, vTextureCoord.y + 0.5)); gl_FragColor = vec4(color.r, color.g, color.b, color2Map.g); } else { gl_FragColor = vec4(color.r, color.g, color.b, color.a); } }
@sonuan 色差的问题你咋解决的,按你的改了之后,颜色有点深
@li-xiaojun 貌似无法解决。用RGB转成YUV正常情况是可以,但是绿幕上的色值,不仅仅只有绿色,这个有点奇怪。