【发布时间】:2015-01-19 07:41:32
【问题描述】:
我正在开发一个聊天工具,我们有高质量的表情符号,扩展名为 mp4(文件大小约为 300kb)。 GIF 格式由于质量差且颜色有限 (256) 而未被使用。
我需要将 ListView 中的文件显示为循环视频。
现在我正在尝试使用 TextureView 和 MediaCodec 类来做到这一点。
可以在https://github.com/google/grafika 找到来源。
问题是当您尝试同时播放 4 个以上的视频时,会发生错误
android.media.MediaCodec.dequeueOutputBuffer 处的 IllegalStateException。
我认为这是因为内存消耗大,
在我的设备(HTC ONE M7)上播放四个视频时,处理器负载超过 60%!
我该如何解决这个问题?也许我需要使用第三方编解码器?
或者使用视频显示笑脸的想法很糟糕,我需要放弃它并使用 GIF 之类的东西?
【问题讨论】:
-
你不能在 android 的一个线程中启动一个线程。您必须为它创建一个单独的线程任务并让 android 的工作线程处理它们,然后它们反过来将信息反馈给您的 UI 线程。 Asynctask 非常适合加载小视频,但对于长期应用程序,您将需要一个 Service。
-
嗯,据我所知只有 4 个 kworkers,我猜他们已经用 4 个视频刷爆了。
-
所有视频已经在不同的线程中播放。
-
视视频质量而定,可以同时播放8个质量差的视频...
-
我相信这是平台限制,你不能创建太多解码器的实例如果你需要更多,你必须选择另一种方式
标签: android video gif android-mediacodec textureview