Skip to content

Instantly share code, notes, and snippets.

@canaanyjn
Created August 23, 2017 12:47
Show Gist options
  • Save canaanyjn/7f8b5c6f523f275f904fa07d8ec5a374 to your computer and use it in GitHub Desktop.
Save canaanyjn/7f8b5c6f523f275f904fa07d8ec5a374 to your computer and use it in GitHub Desktop.
Video Map
Main Project
----
Grafika
https://github.com/google/grafika
MediaCodec API Demo
http://bigflake.com/mediacodec/
OpenGL ES
RoadMap
----
grafika 主要是搭建 OpenGL ES 环境 ,接受来自 Camera、Decoder 的输入,然后构建 Shader 进行渲染。渲染到 Android 的 Surface 上。
主要包括输出到 Surface/SurfaceTexture, TextureView, GLSurfaceView, Encoder
1. OpenGL ES 的基础知识,如何建立上下文,简单的 Shader 知识
http://wiki.jikexueyuan.com/project/opengl-es-guide
https://github.com/CyberAgent/android-gpuimage
其中要搞清楚 texture, texture_oes_external, frame buffer 等等,
2. 然后完成把 Bitmap 转成 Texture,并且在 OpenGL ES 上渲染,再输出成bitmap,或者输出到 GLSurfaceView 上
3. 完成实时渲染后,再开始学习 bigflack 的 MediaCodec 教程,把实时渲染的 Camera 或者 MediaPlayer 的图像编码,一遍录制一遍编码成 h264
4. 完成在线渲染就可以搞离线渲染了。离线渲染就是在后台把一个视频加滤镜,剪裁。grafka 和 android-gpuimage 上面的 demo 挺多的,可以参照着一步步来
5. 下一步就是你得考虑如何踩坑和多线程优化了,比如引入多线程和阻塞队列来优化编解码
6. 然后就可以自己去写个 渲染引擎了,写一个修图 APP 或者视频编辑器
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment