如何使用glsurfaceview在录制的视频上显示文字?

时间:2017-03-31 04:39:22

标签: android canvas bitmap

我制作了CCTV和录制CCTV屏幕 基于https://github.com/unkei/MyWebRTC

我的来源包括一个流光和一个观众。

例如,A是CCTV流媒体。 B是CCTV Viewer。

如果我从B连接到A 显示A相机预览

此来源仅显示相机预览。 相机预览是GLSurfaceView。

我想在GLSurfaceView上显示文字。

首先我尝试更改XML

<FrameLayout android:layout_width="match_parent"
             android:layout_height="match_parent">
    <android.opengl.GLSurfaceView
        android:id="@+id/glview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />
    <TextView
        android:id="@+id/tvCamRecTime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</FrameLayout>

这个xml是流媒体本身显示文本,但不显示查看器。

然后我尝试使用Bitmap Canvas Paint

public void GLText(GL10 gl) { 
    Bitmap bitmap = Bitmap.createBitmap(256, 256, Bitmap.Config.ARGB_4444);
    Canvas canvas = new Canvas(bitmap);
    bitmap.eraseColor(0);

    Paint paint = new Paint();
    paint.setTextSize(18);
    paint.setAntiAlias(true);
    paint.setARGB(0xff, 255, 0, 255);
    paint.setTextAlign(Paint.Align.LEFT);
    paint.setTextScaleX(0.5f);

    canvas.drawColor(Color.BLUE);
    canvas.drawText("testGLText", 16, 112, paint);

    int[] mTextures = new int[1];
    gl.glGenTextures(1, mTextures, 0);
    gl.glBindTexture(GL10.GL_TEXTURE_2D, mTextures[0]);

    gl.glTexParameterf( GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST );
    gl.glTexParameterf( GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR );

    gl.glTexParameterf( GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_REPEAT );
    gl.glTexParameterf( GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_REPEAT );
    GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
    bitmap.recycle();

}

和此来源enter image description here

此源流媒体和查看器显示文本。 但背景颜色为绿色。

所以,我认为如果补充BitmapCanvas,通常会显示文字流媒体和观看者。

如何在Android上的GLSurfaceview上显示文字? 感谢。

0 个答案:

没有答案