2012-02-17 35 views
3

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

我花了很多时间与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]]; 

render.fsv:

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

render.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

请小心 - _9.1不使用MediaPlayer框架访问音乐库中媒体的应用程序将被拒绝_ – beryllium 2012-02-17 15:45:08

+0

那么,如果它是AVI或WMA,可疑的是它在音乐库中...... – StilesCrisis 2012-02-17 16:51:14

回答

3

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

  1. 解码从YUV
  2. 转换为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纹理)。

+0

Hi max very感谢您的回答。我真的很高兴你的答案。我对opengl和着色器没有太多的想法。 你知道任何一个例子吗? – 2012-02-18 12:14:39

+0

这真的不是太复杂。您只需使用采样器获取像素颜色,然后使用简单的you-rgb转换公式转换它。你可以在维基百科上找到它:http://en.wikipedia.org/wiki/YUV#Conversion_to.2Ffrom_RGB – Max 2012-02-18 14:34:46

+0

您好,我不知道在哪里可以添加此代码。在我的渲染方法中,我得到了uint8_t格式的帧缓冲区。我用这种方法编辑帖子。非常感谢您的帮助。 – 2012-02-22 06:39:15