gpt4 book ai didi

ios - 适用于 iOS 的 ffmpeg 替代品

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:08:17 24 4
gpt4 key购买 nike

几周来,我一直在尝试在我的 iOS 应用程序中实现 ffmpeg。现在我可以播放几个 avi 文件,但其他文件,如 flv、wma、mp4...播放速度很慢。

我花了很多时间在 ffmpeg 和 opengl 上,但我没有找到解决方案。

我正在寻找在 iOS 设备上播放此文件的其他替代方法。

有人知道我可以用来播放这些文件的其他库、框架...。无论他们是否有营业执照。

非常感谢,

编辑:

初始化着色器:

 shader = [[GLShader alloc] initWithFileName:@"render" attributes:[NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:0], @"position",
[NSNumber numberWithInt:1], @"texCoords", nil]
uniforms:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:0], @"sampler0",
[NSNumber numberWithInt:0], @"viewProjectionMatrix",nil]];

渲染.fsv:

uniform sampler2D sampler0;
varying highp vec2 _texcoord;
void main()
{ gl_FragColor = texture2D(sampler0, _texcoord);}

渲染.vsf:

attribute vec4 position;
attribute vec2 texCoords;
varying vec4 colorVarying;
varying vec2 _texcoord;
uniform mat4 viewProjectionMatrix;

void main()
{ _texcoord = texCoords;
gl_Position = viewProjectionMatrix * position;}

如何在此代码中实现您的解决方案?

最佳答案

我遇到过类似的问题。有两个瓶颈:

  1. 解码
  2. 从 yuv 格式转换为 rgb 格式

我通过使用着色器转换图像解决了第二个问题。它现在工作得非常快(我可以在 iPad2 上以 30 fps 同时渲染 6 个视频)。

这是片段着色器的一部分:

    uniform sampler2D y;
uniform sampler2D u;
uniform sampler2D v;

...
y = texture2D(y, vec2(nx,ny)).r;
u = texture2D(u, vec2(nx, ny)).r - 0.5;
v = texture2D(v, vec2(nx, ny)).r - 0.5;

r = y + 1.13983*v;
g = y - 0.39465*u - 0.58060*v;
b = y + 2.03211*u;

gl_FragColor = vec4(r, g, b, 1.0);

注意:您必须将 y、u、v 分量存储在 3 种不同的纹理中。

nx 和 ny - 是归一化纹理坐标(从 0 到 1 纹理)。

关于ios - 适用于 iOS 的 ffmpeg 替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9327264/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com