SurfaceView中在利用OpenGL绘制视频首帧预览图

Android中利用MediaPlay+SurfaceView播放视频的时候,我们一般都会在视频开始播放之前先展示的是视频的首帧预览图,这时候我们一般都是通过在surfaceview上面覆盖一个ImageVIew来显示预览图(imageView的显示与隐藏),而下面我们要说的是可以通过OpenGL来绘制预览图。

首先第一步我们要创建一个sufaceview

 surfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
            @Override
            public void surfaceCreated( SurfaceHolder holder) {

            }
            @Override
            public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
                drawBitmapTOSurface(holder.getSurface(), vedioBitmap);//这个就是我们将视频的首帧bitmap绘制到surfaceview上的方法
                startPlay();//表示的是播放视频
            }

            @Override
            public void surfaceDestroyed(SurfaceHolder holder) {

            }
        });
第二部,创建EGL环境
    /**
     * 向surfaceview中绘制bitmap
     *
     * EGL是介于诸如OpenGL 或OpenVG的Khronos渲染API与底层本地平台窗口系统的接口。
     * 它被用于处理图形管理、表面/缓冲捆绑、渲染同步及支援使用其他Khronos API进行的高效、加速、混合模式2D和3D渲染。
     */
    private void drawBitmapTOSurface(Surface surface, Bitmap bitmap) {

        //1. 取得EGL实例
        EGL10 egl = (EGL10) EGLContext.getEGL();
        //2. 选择Display
        EGLDisplay display = egl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY);
        egl.eglInitialize(display, null);

        int[] attribList = {
                EGL10.EGL_RED_SIZE, 8,
                EGL10.EGL_GREEN_SIZE, 8,
                EGL10.EGL_BLUE_SIZE, 8,
                EGL10.EGL_ALPHA_SIZE, 8,
                EGL10.EG
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值