1

更新:我通过在进入后台状态时强行终止不释放媒体编解码器的应用程序解决了这个问题。这样,我首先在内部强制释放了媒体编解码器,然后杀死了应用程序。..................................................... ………………………………………………………………………………

我有 2 个不同的媒体播放器应用程序,它们在智能电视上的 android L 上运行。

这两个应用程序都使用 MediaCodec 进行播放。但是问题是当一个应用程序正在运行时如果您启动另一个应用程序它不会播放视频,因为以前的应用程序没有调用 mediacodec.release() (因此在 OMX 级别存在资源问题)

所以我的问题是,如何处理 Mediacodec 本机级别的资源?

目前我有这个机制:

1)我有一个资源管理器。它可以将资源分配给一个客户端并从其他客户端抢占资源。

2) 假设 2 个应用是 app1 和 app2 。

3)假设,用户打开了app1,所以它尝试创建媒体编解码器,我尝试在其中获取资源,并且由于当前没有主体持有资源它获取它们..然后它创建媒体编解码器组件..等等。

4)现在用户启动app2播放一些文件,所以app1刚刚丢失了audioFocus,然后app2尝试创建媒体编解码器,我再次尝试获取资源。但这一次,由于 app1 目前持有 Resoucres,Resmanager 要求 app1 的 cleint 释放 Resoucres。

问题在这里发生了,因为当应用程序调用媒体编解码器时,资源将被释放,release(),我无法控制如何对应用程序说释放媒体编解码器。

android L 中没有标准方法,从 mediacodec 本机级别发送 ERROR 以要求应用程序发布 mediacodec ..

有没有人有想法,如何处理这种情况,即如何要求应用程序发布 Mediacodec ???

4

0 回答 0