基于Web的播放带有方向标志的iOS视频

时间:2012-02-06 01:18:50

标签: flash html5 video ios5 ffmpeg

我们最近为我们的某个系统创建了一个iPhone应用程序,允许用户将图片和视频内容上传到我们的服务中。我们遇到的最后一个主要障碍是如何处理以水平右方以外的方向上传的视频。显然,如果您的播放系统没有考虑与视频一起发送的方向标记,那么它将会颠倒或侧向播放。

正确的方法出现,因为播放系统应该在播放之前考虑方向标记。这就是Apple直接在设备上以及通过Quicktime处理它的方式。

所以我的第一个希望是有人知道一个基于网络(HTML5或Flash)的播放器能够在播放期间根据视频方向元数据或基于通过的标志旋​​转视频(我们已经有了必要的)如果我们需要手动传递它,则在DB中可用的标志)。如果你知道任何这样的球员,请分享!

如果您不知道这样的播放器,那么有没有人有运气使用FFMPEG或MEncoder旋转视频?我们上周进行了几个小时的测试,并且无法从那里提到的两个重击手那里获得任何不错的结果。

一切都失败了,是否可以让iPhone上传指定方向的视频或图像?

这三个中的任何一个都适合我,但我更愿意做任何标准(如果存在)。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

Maybe I am missing what you asking but if you are using ffmpeg on the iPhone or android which uses opengl couldn't you read the metadata in the stream and adjust the orientation accordingly with glrotate, we had a similar issue on the ipad/iphone when someone changes the orientation. We watch for the orientation change notification and rotate the display.


    #ifdef LANDSCAPE 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    glMatrixMode(GL_MODELVIEW); 
    glLoadIdentity(); 
    #ifdef __IPAD__ 
    printf("got to ipad"); 

    glViewport(0, 0, 768, 1024); 
    if (isFlipped()) 
    glRotatef(90, 0, 0, 1); 
    else 
    glRotatef(-90, 0, 0, 1); 
    glOrthof(0.0, (GLfloat) 1024, (GLfloat) 768, 0.0, 0, 100.0f); 
    #else 
    glViewport(0, 0, 320, 480); 
    if (isFlipped()) 
    glRotatef(90, 0, 0, 1); 
    else 
    glRotatef(-90, 0, 0, 1); 
    glOrthof(0.0, (GLfloat) 480, (GLfloat) 320, 0.0, 0, 100.0f); 
    #endif  
    #else 
    data->glMatrixMode(GL_PROJECTION); 
    data->glLoadIdentity(); 
    data->glMatrixMode(GL_MODELVIEW); 
    data->glLoadIdentity(); 
    data->glViewport(0, 0, window->w, window->h); 
    data->glOrthof(0.0, (GLfloat) window->w, (GLfloat) window->h, 0.0, 
    0, 1.0); 
    #endif 
    data->updateSize = SDL_FALSE; 
    } 

    You can also check out or iOS video player project for ways to extract metadata from the video stream.

    www.mooncatventures.org/mediawiki