通过opengl着色器修改本地MP4视频播放时的饱和度

先看效果图


image.png
image.png

目的

折腾了两天才知道, 播放视频的opengl做法和摄像头浏览的处理是一样的. 甚至render类的代码都不需要修改.
实现了这一小步, 我就更有信心下一步了.
最终目的还是能够实现跟抖音本地视频编辑一样的效果. 当然最理想的情况就是能够不使用FFmpeg的情况下, 加特效, 裁剪, 合成, 压缩视频.

下一步应该是裁剪了.

实现

  1. 通过MediaPlayer播放视频, 当然最终的目标是自己通过MediaCodec对音视频解码播放, 但是这里只是为了演示opengl的特效实现, 所以使用MediaPlayer足够了.

  2. 展示是一个普通的GLSurfaceView .

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:keepScreenOn="true">

    <android.opengl.GLSurfaceView
        android:id="@+id/glsurfaceview"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true" />

....
</RelativeLayout>
  1. opengl着色器相关内容仍然和前一篇一样. 不列出了. 具体看demo吧.

  2. 千万别忘这句话, 浪费了2个小时
    surfaceView.setEGLContextClientVersion(2)

代码地址: https://github.com/shaopx/opengl_video_effect_demo

推荐阅读更多精彩内容