首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于Android的视频解码与渲染

基于Android的视频解码与渲染
EN

Stack Overflow用户
提问于 2011-07-21 16:48:34
回答 1查看 6.1K关注 0票数 4

我需要做的是解码视频帧和渲染在梯形表面上的帧。我使用Android2.2作为我的开发平台

我不使用mediaplayer服务,因为我需要访问解码帧。

到目前为止,我的情况如下:

  • I使用stagefright框架提取解码后的视频帧,然后将
  • 每帧从YUV420转换为RGB格式
  • ,然后将转换后的帧复制到纹理中并呈现到OpenGL表面
  • 注意到,我正在使用处理而不是直接使用OpenGL调用。

所以现在我的问题是

  • i只能用stagefright
  • 解码mp4文件,呈现速度太慢,320 x 420帧
  • 大约有100 is没有音频,我只能渲染视频,但我仍然不知道如何同步播放音频帧。

所以对于我的问题。

  • 如何支持其他视频格式?我应该使用舞台表演还是应该切换到ffmpeg?
  • 如何提高性能?我应该能够支持至少720 p?
  • 我应该直接使用OpenGL调用而不是处理吗?这会改善performance?
  • How,我能在播放期间同步音频帧吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-29 18:06:06

添加其他视频格式和编解码器

如果您有“其他”视频格式的解析器,那么您需要实现Stagefright媒体提取器插件并集成到出色的播放器中。类似地,如果您拥有所需的视频编解码器的OMX组件,则需要将它们集成到OMXCodec类中。在stagefright中使用FFMPEG组件,或者使用FFMPEG播放器代替stagefright看起来并不简单。但是,如果Opencore中已经提供了所需的格式,那么您可以修改Android,以便为这些格式选择Opencore。您需要将获取YUV数据的逻辑移植到Opencore。(对MIOs弄脏了)

回放性能

表面平移器,用于正常播放,使用覆盖渲染。它通常提供大约4-8个视频缓冲区(到目前为止,我已经看到)。因此,您可以检查在打开的GL呈现中获得了多少不同的缓冲区。增加缓冲区肯定会提高性能。另外,检查YUV到RGB转换所需的时间。可以优化或使用开源库来提高性能。通常Open不用于视频渲染(以图形闻名)。所以对表演不太确定。

音频视频同步

使用音频时间作为参考。在Stagefright,令人敬畏的播放器使用音频播放器播放音频。此播放器实现了提供时间数据的接口。令人敬畏的播放器使用这个渲染视频。基本上,当视频帧的呈现时间与正在播放的音频示例的时间相匹配时,就会呈现视频帧。

沙什

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6779741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档