转载:http://blog.csdn.net/Martin20150405/article/details/53149578
为了方便没有准备好梯子的同学,我把项目在CSDN上打包下载,不过不会继续更新(保留在初始版本)
先放一张效果图:
前言
Android平台下的全景视频(360,Panorama video)播放器是去年年底留的坑,那个时候对于OpenGL ES了解有限,而且现有的开源代码也不多(那个时候UtoVR SDK也还没发布),现有的解决方案像PanoramaGL,Panframe之类的都不能满足要求(Panframe居然连个缩放都没有!!)
2016年是不是VR元年,我不知道。但是全景视频作为用户体验VR的最廉价途径,还是有不少公司纷纷上马的。
2016年初开源的MD360播放器是一个很好的工程实现,支持的功能也很丰富,适合实际应用(虽然也有一堆的坑没有填,还没有对应的文档)
之所以要写这个系列的博客,是因为我发现大部分想要做全景视频播放器的同学,或者一些现有的开源库(例如MD360)的使用者并不知道自己在干什么,该怎么做,或者说对于相关的概念一知半解。如果你对全景视频的播放原理或者对OpenGL ES感兴趣,这个系列的博客可能会对你有帮助。
由于项目的代码已经和教程有较大差异,只是想学习原理的可以在这里下载(CSDN,不要积分)基础功能的示例代码。
请注意,本文假定读者有一定的Android开发基础(没有OpenGL ES的基础没有关系)
目录
- 从OpenGL ES 2.0开始
1.1 OpenGL ES 2.0基础知识
1.2 用OpenGL ES 2.0画一个三角形
1.3 用OpenGL ES 2.0显示一张图片(上)
1.4 用OpenGL ES 2.0显示一张图片(下) - MediaPlayer播放视频
2.1 使用GLSurfaceView和MediaPlayer播放一个平面视频(上)
2.2 使用GLSurfaceView和MediaPlayer播放一个平面视频(中)
2.3 使用GLSurfaceView和MediaPlayer播放一个平面视频(下) - 全景视频的原理
3.1 全景视频是如何实现的
3.2 使用OpenGL ES 2.0绘制一个球 - 传感器事件以及坐标系
4.1 传感器类型以及数据收集方法
4.2 屏幕朝向,手机姿态的相关概念
4.3 怎么都搞不清楚的几个坐标系 - 全景视频播放器制作
5.1 使用OpenGL把全景视频贴到球上
5.2 使用旋转矢量传感器改变球的朝向
5.3 如何实现分屏效果
5.4 响应用户的单指触控事件(平移)
5.5 响应用户的多指触控事件(缩放)
5.6 播放器的UI制作
5.7 使用OpenGL ES接口保存屏幕截图
5.8 使用MediaPlayer播放在线视频 - (未完待续)