我需要做的是解码视频帧并在梯形表面上渲染帧。我正在使用Android 2.2作为我的开发平台
我没有使用媒体播放器服务,因为我需要访问已解码的帧。
这是我到目前为止所拥有的:
所以现在我的问题是
所以我的问题......
答案 0 :(得分:2)
将其他视频格式和编解码器添加到stagefright
如果你有“其他”视频格式的解析器,那么你需要实现Stagefright媒体提取器插件并集成到真棒播放器中。同样,如果您有所需视频编解码器的OMX组件,则需要将它们集成到OMXCodec类中。 在stagefright中使用FFMPEG组件,或使用FFMPEG播放器而不是stagefright似乎并不重要。 但是,如果Opencore中已经提供了所需的格式,那么您可以修改Android Stack,以便为这些格式选择Opencore。您需要将获取YUV数据的逻辑移植到Opencore。 (与MIO肮脏)
播放效果
用于正常播放的表面褶皱使用Overlay进行渲染。它通常提供大约4-8个视频缓冲区(到目前为止我所看到的)。因此,您可以检查在OPEN GL渲染中获得的缓冲区数量。增加缓冲区肯定会提高性能。 另外,检查YUV到RGB转换所花费的时间。可以优化或使用开源库来提高性能。 通常Open GL不用于视频渲染(以图形而闻名)。所以不确定表现。
音频视频同步
音频时间用作参考。在Stagefright中,真棒播放器使用音频播放器播放音频。该播放器实现了一个提供时间数据的界面。真棒玩家使用它来渲染视频。基本上,当视频帧的呈现时间与正在播放的音频样本的呈现时间匹配时,呈现视频帧。
词shash