微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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将视频分辨率考虑在内.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐