介绍

因为项目的需要需要实现圆角视频,一开始接到需求的时候是惊讶的,因为很少有圆角的视频(主要是一开始没有思路了。。。。。)

github 上已经有一个实现了

videoroundedcorners

但是对于我的需要有些不满足,不能了在上面添加view,因为它设置了

setZOrderOnTop

所以才有了这边文章

效果

屏幕快照 2018-04-12 下午5.38.26.png

屏幕快照 2018-04-12 下午5.38.35.png

好了效果就是这样的,接下来是代码了

实现部分

这里是采用MediaPlayer 和 Opengl 实现的

用到了Opengl的模板测试功能

@Override

public void onDrawFrame(GL10 gl) {

GLES20.glEnable(GLES20.GL_STENCIL_TEST);

GLES20.glClear(GLES20.GL_STENCIL_BUFFER_BIT);

GLES20.glStencilFunc(GLES20.GL_ALWAYS, 1, 0xff); // 总是通过

GLES20.glStencilOp(GLES20.GL_KEEP, GLES20.GL_KEEP, GLES20.GL_REPLACE);

if (currentShape == SHAPE_CIRCL) {

mCircleShape.draw();

} else {

mRoundShape.draw();

}

GLES20.glStencilFunc(GLES20.GL_EQUAL, 1, 0xff); // 只有模板缓冲区中的模板值为1的地方才被绘制

GLES20.glStencilOp(GLES20.GL_KEEP, GLES20.GL_KEEP, GLES20.GL_KEEP);

mVideoTextture.draw();

GLES20.glDisable(GLES20.GL_STENCIL_TEST);

}

先画一个形状然后再把视频覆盖到上面进行裁剪实现还是不复杂的。

跟Canvas的PorterDuffXfermode实现圆形图片有点异曲同工的意思。

有需要可以去看看代码

如果对你有帮助就给他stars吧

代码链接

html中视频变圆角,圆形视频和圆角视频的一种实现方式相关推荐

  1. 帆软BI中界面上如果要替换原有的组件,两种替换方式

    通过查看源码js得知,BI中的组件有两种书写方式,第一种就是类似: var He = function (e) {var t, i;function n() {};i = e;t = n;t.prot ...

  2. pythontk界面显示函数中的变量值_简单易学,西门子触摸屏3种修改变量值的方法!博图Wincc V14组态...

    应条友要求,今天分享3种修改触摸屏变量值的最常用方法! 全文约700字,通读4分钟! 看完本章,你将收获以下内容: 一:必会知识点:3种修改变量的方法及适用点 二:实例:3种方法修改触摸屏变量值 三: ...

  3. php裁剪图片圆角圆形,php生成圆角图片代码

    搜索热词 下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. $image_file = $_GET['src']; $corner_radi ...

  4. Windows7中启动Mysql服务时提示:拒绝访问的一种解决方式

    场景 在Windows7中打开任务管理器--服务下 找到mysql的服务点击启动时提示: 拒绝访问 这是因为权限不够导致的不能启动sql服务. 点击 任务管理器右下角的服务 在这里就可以正常启动服务

  5. C#中(int)、Conver.Toint32()、int.Parse()三种类型转换方式的区别与联系--C#基础知识

    自己也是刚学习C#程序设计语言,总结了一点知识点,想分享给大家.毕竟刚学习这门语言,学得不深,哪里如果有错误,请帮个忙指出一下哈,谢谢! 1.(int)可用于单精度.双精度等其他数值类型的转换(到整型 ...

  6. C#中(int)、Conver.Toint32()、int.Parse()三种类型转换方式的区别

    1.(int)可用于单精度.双精度等其他数值类型的转换(到整型int),不能用于转换string类型转换为int类型,系统会报错,程序是不能运行. 注意:Double或Float被转换成int类型时, ...

  7. 百度的云智一体,让视频变得“硬核性感”

    金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 这是一个视频无处不在的大时代. 娱乐,靠视频. 学习,看视频. 甚至图文工作,也在视频化. -- 视频,已然逐步成为了信息传递的主要载体和介 ...

  8. 视频配音文字转语音怎么弄?介绍几种好用的方法给你

    相信很多小伙伴在制作视频的时候都会遇到需要配音的问题,当我们不想用自己的声音去配音时,就可以借助一些配音软件来快速把文字转语音.下面我就来告诉你们视频配音制作软件有哪些,如果你们感兴趣的话,快来阅读本 ...

  9. 音视频开发必看:“秒变萝莉音”,游戏中的变声是如何实现的

    0.引 自从有了"变声",你永远猜不到隔着网线的另一边和你开黑的队友到底是男是女. 当然,天然会伪音的我们学不来,也没必要,这里主要跟大家分享一个一篇关于音视频开发中的变声实现的技 ...

  10. 怎么让模糊的数字变清楚_后期处理 怎么覆盖视频中的数字或某个文字?模糊处理视频中某几个字中的1个字...

    明天就是2020年了,时间过得真快啊,仿佛2019从未来过,但2019确实要结束了,真是令人感慨啊~不说废话,还是来看看今天的视频后期处理教程吧!后期处理是什么意思呢?今天小编要来介绍的是摄影的后期处 ...

最新文章

  1. android studio 优化提速方法,Android Studio速度慢(如何加速)?
  2. zend studio 10破解/汉化
  3. HTML块级元素/块标签/块元素
  4. Enze Second day
  5. YUV采样及存储格式
  6. 20. javacript高级程序设计-JSON
  7. 仿souhu页面设计
  8. windows下phpstorm的高效使用
  9. 引用com.sencha.gxt.ui.GXT加载错误解决方案
  10. 线性同余法产生1000个随机数
  11. 大名鼎鼎的挖掘鸡最新版本6.5
  12. TCP粘包的分析和处理
  13. IPCam网络摄像头
  14. #655 – 冒泡事件可能会被某些控件屏蔽(Bubbling Mouse Events Swallowed by Some Controls)
  15. 用计算机弹我们不一样谱子,我们不一样钢琴谱
  16. 人工智能,机器学习与深度学习,到底是什么关系
  17. 一篇文章让你解决sql报错check the manual that corresponds to your MySQL server version for the right syntax to
  18. Redis 内存分析神器
  19. java批量生成pdf
  20. OpenJudge Tian Ji -- The Horse Racing

热门文章

  1. python有什么优点_Python是什么?有什么优点?赶紧来看看Python的入门教程
  2. python idle在哪_python安装包里idle在哪
  3. 时间复杂度、渐进记法、主定理
  4. redis php扩展 linux,linux下为php安装redis扩展phpredis
  5. Cpp 对象模型探索 / 单一继承的类的内存布局
  6. sigmastarSSD201/SSD202 github上开源了!
  7. Arduino--1838红外遥控
  8. 云函数连接mysql超时_云函数访问MYSQL数据库出错?
  9. java sql string_JAVA String转化成java.sql.date和java.sql.time方法示例
  10. web页面--前端明水印