视频渲染SDK介绍
半年之前我写过一篇文章——为播放器外接一套渲染框架,本质就是通过OpenGL将视频的内容绘制在SurfaceView或者TextureView的画布上,实现控制视频渲染的作用,当时有很多小伙伴很希望接入这个SDK。最近花了一点时间,将SDK封装好了,本文就是来介绍一下如何使用这个SDK。
视频渲染SDK接入
- 接入工程
工程的build.gradle中添加
代码语言:javascript复制allprojects {
repositories {
google()
jcenter()
maven {
url 'https://jitpack.io'
}
}
}
app的build.gradle中添加
dependencies {
implementation 'com.github.JeffMony:Laker:1.0.5'
}
- 接口介绍
- setOnSurfaceListener 设置SurfaceView或者TextureView的监听
- setOnRenderListener设置渲染错误的回调,如果渲染过程中出现错误会回调给上层
- setTextureView和setSurfaceView分别支持设置SurfaceView和TextureView
- setVideoSize在播放器解析获得视频的宽高之后,需要传给渲染SDK,渲染SDK只负责渲染,不负责任何视频信息的解析
- addEffect/updateEffect/deleteEffect 表示增加特效、更新特效、删除特效,这是渲染SDK的核心接口,可以支持各种各样的特效
- addFilter/updateFilter/updateFilterIntensity/deleteFilter 表示增加滤镜、更新滤镜、更新滤镜强度、删除滤镜
- updateFrame如果在暂停情况下应用特效也可以更新上去
- captureFrame可以截取当前播放帧
- setMirror可以设置水平镜像和垂直镜像
- destroy用完了一定要记得销毁资源
public interface IRenderProcess {
void setOnSurfaceListener(OnSurfaceListener listener);
void setOnRenderListener(OnRenderListener listener);
void setTextureView(TextureView view);
void setSurfaceView(VideoSurfaceView view);
void setVideoSize(int width, int height);
int addEffect(String config);
void updateEffect(int id, String config);
void deleteEffect(int id);
int addFilter(String config);
void updateFilter(int id, String config);
void updateFilterIntensity(int id, int intensity);
void deleteFilter(int id);
void updateFrame();
void captureFrame(OnCaptureListener listener);
void setMirror(MirrorType type);
MirrorType getMirrorType();
void destroy();
}
效果展示
具体的代码已经上传到github上了——github.com/JeffMony/PlayerSDK,大家可以看下运行的效果图:
上面只是简单展示了例子,第一张是视频原画,第二章是水平镜像,第三章是垂直镜像,第四张是添加水印logo,还有很多其他的功能,建议fork或者star一下,后续还会继续更新新的特效,如果你有什么建议,可以私信我。
建议选择“一键高清”,你和原来的视频对比下,会有惊喜。