Android:同时播放多个视频

我正在开发聊天,我们有高质量的表情符号,扩展名为mp4(文件大小约为300kb).由于质量差和颜色有限(256),因此不使用GIF格式.
我需要将ListView中的文件显示为循环视频.
现在我正在尝试使用TextureView和MediaCodec类.
来源可在 https://github.com/google/grafika找到.
问题是当您尝试同时播放4个以上的视频时,会发生错误
android.media.MediaCodec.dequeueOutputBuffer上的IllegalStateException.
我认为这是因为大量内存消耗,
在我的设备(HTC ONE M7)上播放四个视频时,处理器加载超过60%!
 我怎么解决这个问题?也许我需要使用第三方编解码器?
或者使用视频显示表情符号的想法很糟糕,我需要放弃并使用像GIF这样的东西?

解决方法

同时解码器的数量有限制,如果没有其他原因,在某些时候你将超过硬件的最大带宽.在某些设备上,我看到它在配置两个硬件解码器后切换到软件解码. AFAIK这里没有强制行为.

解决问题的一种可能方法是使用单个多路复用视频,将所有表情符号放在一个.mp4文件中.将其播放到SurfaceTexture中,然后将其用作“sprite sheet”.这种方法要求所有动画具有大致相同的帧数,因此您可能需要调整一些或仅填充序列.

更新:根据this link,’M’版本计划添加MediaCodecInfo.CodecCapabilities.getMaxSupportedInstances(),它提供“一个提示支持的并发编解码器实例的最大数量”.对你的问题没有任何帮助,但至少它会给你一个数字.希望API将视频分辨率考虑在内.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...