非常好用的播放器渲染SDK

2023-03-05 14:48:41 浏览数 (1)

视频渲染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一下,后续还会继续更新新的特效,如果你有什么建议,可以私信我。

建议选择“一键高清”,你和原来的视频对比下,会有惊喜。

0 人点赞