基于协议保密的原因,不能具体介绍情况,只是说说注意的地方。
首先视频数据能基本解码成功了,采用OpenGL ES技术是想在原来的基础上提升性能。我试验的结果是性能没有什么变化;从执行时间来说还慢了10倍(之前是0.01秒的处理时间,加了OpenGL ES后还要0.1秒了)。
在成功解码视频数据后加入以下代码:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // 1
[EAGLContext setCurrentContext:_context]; // 2
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES],GLKTextureLoaderOriginBottomLeft, nil]; // 3
GLKTextureInfo *texttureInfo = [GLKTextureLoader textureWithContentsOfData:UIImageJPEGRepresentation(image, 1.0) options:options error:nil]; // 4
self.effect.texture2d0.name = texttureInfo.name; // 5
});
1.我采用了GCD技术来缩短执行时间,确实加了GCD后平均能缩短0.02左右的时间。
2.OpenGL 的选择当前设备上下文(context)。(不设置的话就不会显示处理)
3.作为opengl的视频旋转处理。不然视频是倒立的。
4.生成纹理,做贴图用,在openGL es中叫纹理了。类似UIImageView。(这个要注意,要使用jpg格式的,我开始做成PNG格式的老是黑屏)。
5.绘图并显示图片。
以下是OpenGL ES的相关资源
http://mississi.blog.163.com/blog/static/10248920120127136451896/
http://www.1000phone.net/forum.php?mod=viewthread&tid=6270&highlight=OpenGL%2BES
http://down.51cto.com/zt/6229