ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

如何做到切surfaceview之后不卡画面

如何做到切surfaceview之后不卡画面

切换surface之后 释放老解码器,创建新解码器

参数name是解码器名称,例如某个设备厂商的硬件解码器。

  • 返回false:条件允许时,直接通过setOutputSurface()把现有解码器切到新画面窗口,继续复用它。
  • 返回true:避开直接切换,改为释放旧解码器,再初始化新解码器。

因为部分设备的解码器直接切换 Surface 会黑屏、卡住,所以 Media3 提供了这个判断方法。

override fun codecNeedsSetOutputSurfaceWorkaround(name: String): Boolean { return recreateDecoderOnSurfaceChange || super.codecNeedsSetOutputSurfaceWorkaround(name) }
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进