ios - 将 AVFrame 转换为 CVPixelBufferRef 以在函数 CVOpenGLESTextureCacheCreateTextureFromImage 中使用

标签 ios opengl-es ffmpeg opengl-es-2.0 render

我在 iOS 平台上有一个自定义视频播放器,我阅读了许多线程来调整使用 CVOpenGLESTextureCacheCreateTextureFromImage API 的性能。但是,此 API 始终与 Apple 解码器一起使用,因此由于 Apple 解码器提供 CVPixelBufferRef,我找不到任何方法将 ffmpeg 的 AVFrame 转换为 CVPixelBufferRef ...

谁能指导我这个话题?

是否可以将 CVOpenGLESTextureCacheCreateTextureFromImage API 用于 ffmpeg 的 AVFrames?如果是,如何?

最佳答案

好吧,方法名称的 fromImage 部分为您提供了一个线索,即您必须首先将 avframe 转换为 cgimageref。这是一个回合,但那是你必须做的。直接写入缓冲区对象可能会更好。但你必须做这样的事情来获得一个像素缓冲区
https://github.com/mooncatventures-group/FFPlayer-beta1/blob/master/FFAVFrames-test/ViewController.m

关于ios - 将 AVFrame 转换为 CVPixelBufferRef 以在函数 CVOpenGLESTextureCacheCreateTextureFromImage 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16846074/

相关文章:

linux - 如何使用 ffmpeg 从视频中简单地删除重复帧

ffmpeg - 同一帧图像,通过相同的算法或库,两次压缩后图像相同与否

ios - QuartzCore 动画形状?

ios - UIButton 没有响应触摸

android - 如何在opengl android上暂停onDrawFrame

ios - GL_APPLE_shader_framebuffer_fetch gl_lastFragData

ios - 使用 ffmpeg 将 Mp4 转为 HLS

ios - 为什么我不能更改 ViewController 的 Root View 的 UIView 类

ios - 添加手势识别器以允许在 Swift 中的 MapView 上水平滑动

android - 如何在 OpenGL 中使用 fragment 着色器制作更平滑的边框?