繁体   English   中英

如何在iOS应用中将帧从FFmpeg渲染到屏幕?

[英]How do I render frames from FFmpeg to the screen in an iOS app?

我是iOS的新手,但是我已经在Android上实现了基于FFmpeg的播放例程。 我打算在iOS上再次进行。

看来我可以使用OpenGL ES 1.1 / 2.0将FFmpeg视频的帧绘制到屏幕上。 但是,OpenGL ES似乎很困难。 另外,由于视频纹理的宽度,我遇到了一些限制。 我必须将视频帧分割成许多图像,然后将它们绘制到屏幕上以组成帧。

有没有更简单的方法可以在iOS上使用OpenGL ES渲染此视频? 在iOS中还有其他方法可以将2-D视频帧快速绘制到屏幕上吗?

啊。 因此,您想要呈现非POT源。 无需拆分为多个纹理即可完成此操作-通过创建最接近POT大小的纹理,渲染为该纹理,然后仅涂抹实际包含图像的部分,即可完成此操作。 在这里查看示例(C ++)。 相关部分:

//Calculating the texture size
double exp = ceil(log((double)max(Texture.HardwareHeight, Texture.HardwareWidth))/log(2.0));
texsize = min(pow(2, exp), (double)maxSize);

然后

//draw the original frame 1:1 into the (larger) texture
float ymax = min(2.0f*((float)Texture.HardwareHeight/(float)texsize) - 1.0f, 1.0f);     //clamping is for cards with
float xmax = min(2.0f*((float)Texture.HardwareWidth/(float)texsize) - 1.0f, 1.0f);      //smaller max hardware texture than the current frame size

作为渲染时的纹理坐标,使用这些最大值代替1.0。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM