Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在Android上解码和渲染视频大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要做的是解码视频帧并在梯形表面上渲染帧.我使用 Android 2.2作为我的开发平台

我没有使用媒体播放器服务,因为我需要访问已解码的帧.

这是我到目前为止所拥有的:

>我正在使用stagefright框架来提取解码的视频帧.
>然后将每个帧从YUV420转换为RGB格式
>然后将转换的帧复制到纹理并渲染到OpenGL表面
>请注意,我正在使用Processing而不是直接使用OpenGL调用.

所以现在我的问题是

>我只能使用stagefright解码mp4文件
>渲染太慢,对于320×420帧大约100ms
>还没有音频,我只能渲染视频,但我仍然不知道如何同步音频帧的播放.

所以我的问题……

>我如何支持其他视频格式?@R_109_10675@用stagefright还是应该切换到ffmpeg?
>我该如何改善表现?我应该能够支持至少720p?
>我应该直接使用OpenGL调用而不是Processing吗?这会改善性能吗?
>如何在播放期间同步音频帧?

解决方法

将其他视频格式和编解码器添加到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

大佬总结

以上是大佬教程为你收集整理的在Android上解码和渲染视频全部内容,希望文章能够帮你解决在Android上解码和渲染视频所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。