Android WebRTC视频旋转问题
最近在对接WebRTC到安卓手机上,有个需求就是手机横屏时将对方图像进行旋转,研究了WebRTC video_render的代码后发现远端的视频渲染使用opengles20或surfaceview实现,其中opengles20使用硬件渲染,因此性能更好,所以只需将video_render_opengles20.h中的VideoRenderOpenGles20类加上旋转接口即可。
opengles20和opengles相比取消了glRotatex等操作函数,旋转操作改为由shader的顶点渲染实现,改写的shader代码如下:
uniform mat4 uMVPMatrix; //总变换矩阵
attribute vec4 aPosition; //顶点位置
attribute vec2 aTextureCoord;
varying vec2 vTextureCoord;
void main()
{ gl_Position = uMVPMatrix * aPosition; //根据总变换矩阵计算此次绘制此顶点位置vTextureCoord = aTextureCoord;//将接收的颜色传递给片元着色器
}
注意添加了变换矩阵uMVPMatrix,在绘制前调用:
int muMVPMatrixHandle = glGetUniformLocation(mProgram, "uMVPMatrix");
mMMatrix.setRotate(rotate);
glUniformMatrix4fv(muMVPMatrixHandle,
1
,
false
, (float*)mMMatrix
);
转载于:https://www.cnblogs.com/zentel/p/4957467.html
Android WebRTC视频旋转问题相关推荐
- android webrtc 视频旋转
libjingle_peerconnection中的SurfaceViewRenderer是视频绘制类,在自己的项目中定义一个新的SurfaceViewRenderer类,把代码都拷贝过来, 然后加入 ...
- Android WebRtc 桌面投屏、视频源码
Android WebRtc 桌面投屏.视频源码 Android/iOS/PC/Web 四大平台,可以说Android/Web得天独厚,几乎被Google给完全封装,C端只需建立好信令,架设好webs ...
- Android WebRTC 入门教程(二) -- 模拟p2p本地视频传输
Android WebRTC 入门教程(一) – 使用相机 Android WebRTC 入门教程(二) – 模拟p2p本地视频传输 源码工程: https://github.com/LillteZh ...
- android videoview,旋转 视频 orientation,rotation 等
最近一直在研究android编程中有关 视频的旋转的操作,目前仍然没有完成目标: 在某一个界面中的某个小区域中的videoview,想让这个videoview中的视频旋转90度. 尝试的方法有: 1, ...
- 视频教程-Android WebRTC 实现1V1实时音视频通信-Android
Android WebRTC 实现1V1实时音视频通信 从2012年开始从事移动互联网方面的开发工作,曾担任去哪儿网开发工程师,搜狗高级开发工程师,拥有多年一线实战开发经验. 擅长语言:Object- ...
- android webrtc学习五(webrtc视频数据传递和切换摄像头问题处理)
android webrtc学习五(webrtc视频数据传递和切换摄像头问题处理) Android webrtc摄像头流程分析 1.打开摄像头 2.获取流数据 摄像头切换 问题场景:在使用华为手机(忘 ...
- Android WebRTC 音视频开发总结(一)
2014-03-03 13:51 by Blacker, 5464 阅读, 7 评论, 收藏, 编辑 接触Android WebRTC有一段时间了,现在将研究过程中的一些经验和知识总结出来,希望大家有 ...
- Android 视频旋转、缩放与回弹动效实现(二)
文章目录 Android 视频旋转.缩放与回弹动效实现(二) 功能需求 实现思路 1. 旋转识别 旋转识别:RotateGestureDetector 2. 旋转处理 旋转处理:VideoTouchR ...
- Android 音视频开发入门指南
最近收到很多网友通过邮件或者留言说想学习音视频开发,该如何入门,我今天专门写篇文章统一回复下吧. 音视频这块,目前的确没有比较系统的教程或者书籍,网上的博客文章也都是比较零散的,希望我后面能挤出时间整 ...
最新文章
- SQL学习教程:基础教程高级教程
- java服务器错误怎么解决_如何解决java.lang.IllegalStateException:服务器处于错误状态异常...
- iOS高级音频的设置项
- 如何防御DDoS攻击
- .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)...
- 免费图标下载:100个手绘的PSD图标
- 活动目录实战系列五(更改域名)
- RabbitMQ事务和Confirm发送方消息确认——深入解读
- c++利用windows api遍历指定文件夹及其子文件夹中的文件
- leetcode-337-打家劫舍三*
- Xilinx Artix-7 Aurora调试过程中遇到的问题
- 周志华机器学习西瓜书速记第一章绪论
- java编写一个测试类_java写一个类,并测试它
- 合宙Air105|Socket|UDP |TCP/IP|W5500|Serial 串口|透传|DTU|网络测试助手|双机互联|内网测试|官方demo|学习(8-3):Socket网络接口-双机互联透传
- 人工智能资料库:第37辑(20170220)
- 完整的网络端口表《二》
- 【洛谷】P1067 多项式输出【模拟】
- 注意力机制的详细理解
- toString方法重写
- 记忆存储程序使得计算机能够实现,2016年职称计算机考试模块综合试题及答案(4)...