通过opengl着色器修改本地MP4视频播放时的饱和度
2018-10-15 本文已影响53人
vb12
先看效果图
image.png image.png
目的
折腾了两天才知道, 播放视频的opengl做法和摄像头浏览的处理是一样的. 甚至render类的代码都不需要修改.
实现了这一小步, 我就更有信心下一步了.
最终目的还是能够实现跟抖音本地视频编辑一样的效果. 当然最理想的情况就是能够不使用FFmpeg的情况下, 加特效, 裁剪, 合成, 压缩视频.
下一步应该是裁剪了.
实现
-
通过MediaPlayer播放视频, 当然最终的目标是自己通过MediaCodec对音视频解码播放, 但是这里只是为了演示opengl的特效实现, 所以使用MediaPlayer足够了.
-
展示是一个普通的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>
-
opengl着色器相关内容仍然和前一篇一样. 不列出了. 具体看demo吧.
-
千万别忘这句话, 浪费了2个小时
surfaceView.setEGLContextClientVersion(2)