【发布时间】:2014-01-30 07:14:35
【问题描述】:
伙计们,
我正在使用 MediaCodec 解码网络流。 MediaCodec 上的方法 configure() 将 SurfaceView 对象作为参数,可以轻松将输出直接解码到表面视图中。
当设备方向改变时,问题就出现了。旧表面被破坏并创建一个新表面。 mediacodec 仍然持有的表面变得无效。
我无法销毁 MediaCodec 对象并重新创建一个新对象。这将导致等待几秒钟,直到新的关键视频帧到达。
查看 MediaCodec 上可用的所有方法,似乎更改表面的唯一方法是调用 configure()。在 MediaCodec 对象上多次调用 configure() 可以吗?
或者,也许有一种方法可以存储 MediaCodec 对象的内部状态并将其传输到新的 MediaCodec 对象。
如果您能指导我正确的方向,我将不胜感激。提前感谢您的帮助。
【问题讨论】:
-
MediaCodec对象上允许的操作集有点模糊。另一种方法是配置一个不绑定到显示器的Surface,例如SurfaceTexture,然后您将使用 OpenGL ES 将其渲染为GLSurfaceView。 -
感谢您的帮助。我会试试 SurfaceTexture。
-
你可以试试 TextureView," 与 SurfaceView 不同的是,TextureView 不会创建单独的窗口,而是像常规 View 一样。这一关键区别允许 TextureView 可以移动、转换、动画等。例如,您可以通过调用 myView.setAlpha(0.5f) 使 TextureView 半透明。”我的问题是我使用 Mediacodec 无法成功解码 h264 帧,也许你可以给我一些帮助,我的电子邮件是 zhang.wei@gvconcepts.com,谢谢!
标签: android android-mediacodec